📄 pku2833.cpp
字号:
#include <stdio.h>
#include <algorithm>
using namespace std;
double sm[12], bg[12];
double sum;
int n1, n2, n;
int smsize, bgsize;
bool cmp1(double a, double b)
{
return a < b;
}
bool cmp2(double a, double b)
{
return a > b;
}
void Insert_Small(double tp)
{
if (tp < sm[0] && smsize == n1)
{
return;
}
sm[smsize++] = tp;
push_heap(sm, sm + smsize, cmp2);
if (smsize > n1)
{
pop_heap(sm, sm + smsize, cmp2);
smsize--;
}
}
void Insert_Big(double tp)
{
if (tp > bg[0] && bgsize == n2)
{
return;
}
bg[bgsize++] = tp;
push_heap(bg, bg + bgsize, cmp1);
if (bgsize > n2)
{
pop_heap(bg, bg + bgsize, cmp1);
bgsize--;
}
}
void Solve()
{
int i;
int tmp;
sum = 0;
smsize = 0;
bgsize = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &tmp);
sum += tmp;
Insert_Small(tmp);
Insert_Big(tmp);
}
for (i = 0; i < n1; i++)
{
sum -= sm[i];
}
for (i = 0; i < n2; i++)
{
sum -= bg[i];
}
printf("%.6lf\n", sum / (n - n1 - n2));
}
int main()
{
while (scanf("%d%d%d", &n1, &n2, &n) != -1 && (n1 + n2 + n))
{
Solve();
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -