记录编号 286248 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 中位数 最终得分 100
用户昵称 Gravatardateri 是否通过 通过
代码语言 C++ 运行时间 1.414 s
提交时间 2016-07-30 09:49:06 内存使用 2.92 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
char c;
int flag,a[250002];
void in(int &n)
{
	flag=1;
	n=0;
	c=getchar();
	while(!(c>='0'&&c<='9'))
	{
	  if(c=='-')
	    flag=-1;
	  c=getchar();
	}
	do
	{
	    n=(n<<1)+(n<<3)+c-'0';
		c=getchar();
	}
	while(c>='0'&&c<='9');
	n*=flag;
}
int main()
{
	freopen("median.in","r",stdin);
	freopen("median.out","w",stdout);
	int i,n,x,ans=0,mid;
	in(n);
	mid=n/2+1;
	for(i=1;i<=mid;i++)
	  in(a[i]),push_heap(a+1,a+i+1);
//	make_heap(a+1,a+mid+1);
	for(;i<=n;i++)
	{
		in(x);
		if(a[1]>x)
		{
			pop_heap(a+1,a+mid+1);
			a[mid]=x;
			push_heap(a+1,a+mid+1);
		}
	}
	ans=a[1];
	if(!(n&1))
	  ans+=max(a[2],a[3]),printf("%.1lf\n",ans*1.0/2.0);
	else
	  printf("%.1lf\n",ans*1.0);
	return 0;
}