Pagini recente » Cod sursa (job #1947456) | Cod sursa (job #1126041) | Cod sursa (job #661899) | Cod sursa (job #2072499) | Cod sursa (job #2082170)
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,i,j,k,p,op,a[200001],b[200001];
void pushup(int x)
{
int val;
val=a[x];
while(x>1 && val<a[x/2])
{
a[x]=a[x/2];
x/=2;
}
a[x]=val;
}
void pushdown(int x)
{
int son;
do
{
son=0;
if(x<=m)
{
son=x*2;
if(x*2+1<=m && a[x*2+1]<a[x*2])
son=x*2+1;
if(a[son]<=a[x])
son=0;
}
if(son)
{
swap(a[son],a[x]);
x=son;
}
}
while(son);
}
int main()
{
freopen("heapuri.in","r",stdin);
freopen("heapuri.out","w",stdout);
scanf("%d\n",&n);
while(n)
{
scanf("%d",&op);
if(op==1)
{
scanf("%d",&k);
a[++m]=k;
b[++p]=k;
pushup(m);
}
else
if(op==2)
{
scanf("%d",&k);
for(i=1;i<=m;i++)
if(a[i]==b[k])
pushdown(i);
m--;
}
else
if(op==3)
printf("%d\n",a[1]);
/*for(i=1;i<=m;i++)
printf("%d ",a[i]);
printf("\n");*/
n--;
}
return 0;
}