⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku2833.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 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 + -