记录编号 |
330626 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
中位数 |
最终得分 |
100 |
用户昵称 |
Zwoi_只会打表抄代码的蒟蒻 |
是否通过 |
通过 |
代码语言 |
C |
运行时间 |
3.222 s |
提交时间 |
2016-10-26 19:11:53 |
内存使用 |
1.18 MiB |
显示代码纯文本
#include <stdio.h>
#include <memory.h>
int f[250005],n1,n,i,j,y,p;
float o;
void swap(int x,int y)
{
int t;
t=f[x];
f[x]=f[y];
f[y]=t;
}
void sort(int x)
{
int l,r,min;
l=2*x;
r=l+1;
if(l<=n1&&f[l]<f[x])
min=l;
else min=x;
if(r<=n1&&f[r]<f[min])
min=r;
if(min!=x)
{
swap(min,x);
sort(min);
}
}
int main()
{
freopen("median.in","r",stdin);
freopen("median.out","w",stdout);
memset(f,0,sizeof(f));
scanf("%d",&n);
n1=n/2+1;
for(i=1;i<=n1;i++)
scanf("%d",f+i);
for(i=n1/2;i>=1;i--)
sort(i);
for(i=n-n1;i>0;i--)
{
scanf("%d",&y);
if(y>f[1])
{
f[1]=y;
sort(1);
}
}
if(f[2]<f[3])
p=f[2];
else p=f[3];
if(n%2==0)
{
o=((float)(p+f[1]))/2;
printf("%0.1f",o);
}
else
{
o=f[1];
printf("%0.01f",o);
}
return 0;
}