这是一个很经典的问题
先采用数组存储的方式(节省内存空间)来做,注意提交C++ 不能是G++
#include <iostream>
#include <vector>
#include <map>
#include <list>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <cstdio>
#include <iomanip>
#include <cmath>
#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>
#include <cstring>
#include <queue>
using namespace std;
///宏定义
const int INF = 990000000;
const int MAXN = 5000100;
const int maxn = MAXN;
///全局变量 和 函数
//int T;
long long n, n1, n2;
long long sum;
long long a[15], b[15];
int main()
{
///变量定义
int i, j;
while(1)
{
scanf("%lld %lld %lld", &n1, &n2, &n);
if(n1 == 0 && n2 == 0 && n == 0)
break;
for(i = 0; i < 15; i++)
{
a[i] = 0;
b[i] = 0x7fffffff;
}
//一次扫描
sum = 0;
for(i = 0; i < n; i++)
{
long long t;
scanf("%lld", &t);
sum += t;
sort(a, a + n1);
if(t > a[0])
a[0] = t;
sort(b, b + n2);
if(t < b[n2 - 1])
b[n2 - 1] = t;
}
for (i = 0; i < n1; ++i) sum -= a[i];
for (i = 0; i < n2; ++i) sum -= b[i];
printf("%.6lf\n", sum / (double)(n - n1 - n2));
}
///结束
return 0;
}