模板题。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+4;
struct Heap {
int a[N],siz=0;
inline void push(int x) {
a[++siz]=x;
push_heap(a+1,a+siz+1,greater<int>());
}
inline void pop() {
pop_heap(a+1,a+siz+1,greater<int>());
--siz;
}
inline int top() {
return a[1];
}
inline bool empty() {
return !siz;
}
}hp;
inline int read() {
int x=0,f=1;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*f;
}
int n;
int main() {
// freopen("P3378.in","r",stdin);
n=read();
for (register int t=0;t<n;++t) {
int opt=read();
switch (opt) {
case 1:{
hp.push(read());
break;
}
case 2:{
printf("%d\n",hp.top());
break;
}
case 3:{
hp.pop();
break;
}
}
}
return 0;
}