直接用两个堆,乱搞。。。。
#include<bits/stdc++.h>
#define MAXN 100005
typedef long long ll;
using namespace std;
ll n,a[MAXN],zz,zz2;
priority_queue<ll> q;
priority_queue <ll,vector<ll>,greater<ll> > q2;
void init(){
cin>>n;
for(int i = 1 ; i <= n ; i++)cin>>a[i];
q.push(a[1]);
cout<<a[1]<<endl;
}
void solve(){
for(int i = 2 ; i <= n ; i++){
if(q.top() > a[i])q.push(a[i]);
else q2.push(a[i]);
zz = q.size() , zz2 = q2.size();
while(abs(zz - zz2) > 1){
if(zz > zz2)q2.push(q.top()) , q.pop();
else q.push(q2.top()) , q2.pop();
zz = q.size() , zz2 = q2.size();
}
if(i % 2 == 1)cout<<(q.size() > q2.size() ? q.top() : q2.top())<<endl;
}
}
int main(){
init();
solve();
}