题目意思: 去掉前面n1 个最高分,去掉后面n2 个最低分,求平均分
由于数据比较大,直接排序sort。。会超时的。。就用原始的方法吧。。
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 1000000005
int Min[11];
int Max[11];
void init () {
memset(Max, 0, sizeof(Max));
memset(Min, INF, sizeof(Min));
}
int main() {
int n1, n2, n;
int tt;
while(scanf("%d%d%d",&n1,&n2,&n) != EOF) {
if((n1 + n2 + n) == 0) break;
double sum = 0;
init();
for(int k = 0; k < n; k ++) {
scanf("%d", &tt);
sum += tt;
for(int j = 1;j <= n1; j ++) {
if(tt >= Max[j]) {
for(int q = n1; q > j; q --)
Max[q] = Max[q - 1];
Max[j] = tt;
break;
}
}
for(int r = 1; r <= n2; r ++) {
if(tt <= Min[r]) {
for(int s = n2; s > r; s --)
Min[s] = Min[s-1];
Min[r] = tt;
break;
}
}
}
for (int t = 1; t <= n1; t ++)
sum -= Max[t];
for (int p = 1; p <= n2; p ++)
sum -= Min[p];
printf("%.6lf\n",sum * 1.0 / (n - n1 - n2));
}
return 0;
}