原题
http://acm.hdu.edu.cn/showproblem.php?p
id=4520
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>
#include <string.h>
#include <limits.h>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <string>
using namespace std;
struct node{
double point;
double sum;
int num;
}a[50];
bool cmp(node a,node b){
if(a.sum == b.sum)
return a.num < b.num;
return a.sum < b.sum;
}
int main(){
int n,i;
while(scanf("%d",&n)){
if(n == 0)
break;
for(i=1;i<=n;i++){
a[i].num = i;
}
for(i=1;i<=n;i++){
scanf("%lf",&a[i].point);
}
double max=-10.0;
double min=110.0;
for(i=1;i<=n;i++){
if(a[i].point > max)
max = a[i].point;
if(a[i].point < min)
min = a[i].point;
}
//double ans=0;
double count=0;
for(i=1;i<=n;i++)
count+=a[i].point;
count = count-min-max;
count = count/(n-2);
for(i=1;i<=n;i++){
a[i].sum = a[i].point-count;
if(a[i].sum < 0)
a[i].sum = -a[i].sum;
}
sort(a,a+n+1,cmp);//因为是从1开始的。所以要+1
printf("%d\n",a[1].num);
}
return 0;
}
id=4520