记录编号 |
286248 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
中位数 |
最终得分 |
100 |
用户昵称 |
dateri |
是否通过 |
通过 |
代码语言 |
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;
}