记录编号 |
335806 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
中位数 |
最终得分 |
100 |
用户昵称 |
NewBee |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
3.310 s |
提交时间 |
2016-11-02 18:47:23 |
内存使用 |
1.25 MiB |
显示代码纯文本
#include<cstdio>
#define Cu fclose(stdin);fclose(stdout);return 0;
#define Begin freopen("median.in","r",stdin);freopen("median.out","w",stdout);chul();Cu;
using namespace std;
//且换得人生里美玉无瑕。
const int maxn=250010;
int heap[maxn],size=0;
void swap(int& x,int& y){
x=x^y;
y=x^y;
x=x^y;
}
void chul(){
int n;
bool k;
scanf("%d",&n);
if(n%2)k=1;
else k=0;
int t=(n>>1)+1;
int x,pa,son;
for(int i=1;i<=t;i++){
scanf("%d",&x);
heap[++size]=x;
pa=size;
while(pa!=1){
if(heap[pa>>1]<heap[pa]){
swap(heap[pa>>1],heap[pa]);
pa=pa>>1;
}
else break;
}
}
for(int i=t+1;i<=n;i++){
scanf("%d",&x);
if(x>=heap[1])continue;
heap[1]=heap[size];
size--;
pa=1;
while((pa<<1)<=size){
son=pa<<1;
if((pa<<1)<size){
if(heap[son]<heap[pa<<1|1]){
son=pa<<1|1;
}
}
if(heap[son]>heap[pa]){
swap(heap[son],heap[pa]);
pa=son;
}
else break;
}
heap[++size]=x;
pa=size;
while(pa!=1){
if(heap[pa>>1]<heap[pa]){
swap(heap[pa>>1],heap[pa]);
pa=pa>>1;
}
else break;
}
}
double ans;
if(k){
ans=heap[1];
printf("%.1f",ans);
}
else{
ans=heap[1];
heap[1]=heap[size];
size--;
pa=1;
while((pa<<1)<=size){
son=pa<<1;
if((pa<<1)<size){
if(heap[son]<heap[pa<<1|1]){
son=pa<<1|1;
}
}
if(heap[son]>heap[pa]){
swap(heap[son],heap[pa]);
pa=son;
}
else break;
}
ans+=heap[1];
printf("%.1f",ans/2);
}
}
int main(){
Begin;
}