p3378 https://www.luogu.com.cn/problem/P3378
#include<bits/stdc++.h>
using namespace std;
#define sc(x) scanf("%d",&x)
int n,a,b,d[4000005],id,y;
void ru()
{
d[id]=b;
y=id;
while(d[y]<d[y/2])
{
swap(d[y],d[y/2]);
y/=2;
}
}
void chu()
{
y=1;
swap(d[y],d[id]);
d[id]=0;
while(d[y*2]!=0)
{
if(d[y*2]<d[y*2+1]&&d[y]>d[y*2])
{
swap(d[y],d[y*2]);
y*=2;
}
else
if(d[y]>d[y*2+1]&&d[y*2]>d[y*2+1])
{
swap(d[y],d[y*2+1]);
y*=2+1;
}
else
break;
}
id--;
}
int main()
{
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout)
sc(n);
d[0]=-1;
for(int i=0;i<n;i++)
{
sc(a);
if(a==1)
{
sc(b);
id++;
ru();
}
if(a==2)
{
printf("%d\n",d[1]);
}
if(a==3)
{
chu();
}
}
return 0;
}