对顶堆维护中位数
cpp
void solve(){
int n=0,x;
priority_queue<int> big;
priority_queue<int,vector<int>,greater<int>> small;
while(cin>>x,x){
if(x==-1){
cout<<big.top()<<"\n";
big.pop();
if(n%2==0){
big.push(small.top());
small.pop();
}
n--;
}
else{
if(n%2==0){
if(small.empty()||small.top()>=x)big.push(x);
else{
small.push(x);
big.push(small.top());
small.pop();
}
}
else{
if(big.top()<=x)small.push(x);
else{
big.push(x);
small.push(big.top());
big.pop();
}
}
n++;
}
}
}