代码如下:
#include <bits/stdc++.h>
using namespace std;
int cnt,n,m,a[1000010],x;
void f(int x){
while(x!=1 && a[x]<a[x/2]){
swap(a[x],a[x/2]);
x/=2;
}
}
void d(int x){
if(a[x*2]!=0&&a[x*2+1]!=0&&x*2<=cnt){
if(min(a[x*2],a[x*2+1])==a[x*2]){
swap(a[x],a[x*2]);
d(x*2);
}
else{
swap(a[x],a[x*2+1]);
d(x*2+1);
}
}
else if(a[x*2]!=0&&x*2<=cnt){
swap(a[x],a[x*2]);
d(x*2);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>m;
if(m==1){
cin>>x;
cnt++;
a[cnt]=x;
f(cnt);
}
if(m==2){
cout<<a[1]<<endl;
}
if(m==3){
swap(a[1],a[cnt]);
cnt--;
d(1);
}
}
return 0;
}
只有44分。