原题
#include<bits/stdc++.h>
#include<queue>
#define N 100005
using namespace std;
priority_queue<int,vector<int>,less<int> > x;
priority_queue<int,vector<int>,less<int> > y;
int n,a[N],m;
int main()
{ cin>>n;
cin>>a[1];
cout<<a[1]<<endl;
m=a[1];
for(int i=2;i<=n;i++)
{ cin>>a[i];
if(a[i]>m)//大于中位数,加入右边
{ y.push(a[i]);
}
else
{ x.push(a[i]);//大小于中位数同理
}
if(i%2==1)
{ while(x.size()!=y.size())//只要两边数量不平衡就一直操作
{ if(x.size()>y.size())//其中一边多,则另一边加入mid,赋值mid为一边的堆顶
{ y.push(m);
m=x.top();
x.pop();
}
else
{ x.push(m);
m=y.top();
y.pop();
}
}
//cout<<i<<endl;
cout<<m<<endl;//输出
}
}
return 0;
}