前三点AC,后两点AC,其余WA
#include<iostream>
using namespace std;
struct heap{
int heaparray[1000001];
int size;
void push(int k){
size++;
heaparray[size]=k;
int now=size;
while(now>1&&heaparray[now]<heaparray[now/2]){
swap(heaparray[now],heaparray[now/2]);
now/=2;
}
return;
}
void pop(){
int i=1;
heaparray[1]=heaparray[size];
size--;
while(i*2<=size){
int pos=i*2;
if(heaparray[pos+1]<heaparray[pos]&&pos+1<size) pos++;
if(heaparray[i]<=heaparray[pos]) break;
swap(heaparray[i],heaparray[pos]);
i=pos;
}
}
};
heap h;
int n,t,x;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>t;
if(t==1){
cin>>x;
h.push(x);
}
if(t==2){
if(h.size==0) cout<<0;
else cout<<h.heaparray[1]<<endl;
}
if(t==3){
h.pop();
}
}
}