#include<stdio.h>
#include<utility>
using std::swap;
int que[10010];
long long n,lengthque;
void pushin (int x){
que[lengthque]=x;
long long m=lengthque;
if (lengthque==1) return;
while (m>1){
if (que[m]<que[m%2]){
swap(que[m],que[m%2]);
}
m=m%2;
}
return;
}
void weihu(){
swap(que[1],que[lengthque]);
que[lengthque]=0;
lengthque--;
long long m=1;
while (m<lengthque){
if (m*2+1>lengthque){
if (que[m]>que[m*2]){
swap(que[m],que[m*2+1]);
break;
}
}
else {
if (que[m*2]>que[m*2+1]) {
if (que[m]>que[m*2+1]){
swap(que[m],que[m*2+1]);
m=m*2+1;
}
}
else {
if (que[m]<que[m*2]){
swap(que[m],que[m*2]);
m=m*2;
}
}
}
}
return;
}
int main(){
scanf("%d",&n);
long long m;
lengthque=0;
for (long long i=1;i<=n;i++){
scanf("%d",&m);
if (m==1){
lengthque++;
int x;
scanf("%d",&x);
pushin(x);
}
if (m==2) printf("%d\n",que[1]);
if (m==3) weihu();
}
return 0;
}
两个点A,#11RE,其它TLE。
就是按照模板写的堆,为啥会TLE啊
可恶