Pagini recente » Cod sursa (job #2702651) | Cod sursa (job #1379633) | Cod sursa (job #3211024) | Cod sursa (job #2681881) | Cod sursa (job #1594006)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,o,ind,i,x,q,ind2,w;
struct hip
{
int val;
int ord;
} h[200001];
void up(int i)
{
if(i!= 1 && h[i].val<h[i/2].val)
{
swap(h[i],h[i/2]);
up(i/2);
}
}
void down(int i)
{
if(2*i<=ind && h[i].val>h[2*i].val)
{
swap(h[i],h[2*i]);
up(2*i);
}
}
int main()
{
freopen("heapuri.in","r",stdin);
freopen("heapuri.out","w",stdout);
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&o);
if(o == 1)
{
scanf("%d",&x);
ind++;
ind2=ind;
h[ind].val = x;
h[ind].ord = ind;
while(ind2>1 && h[ind2/2].val>h[ind2].val)
{
swap(h[ind2],h[ind2/2]);
ind2/=2;
}
}
if(o == 2)
{
scanf("%d",&x);
for(w=1;w<=ind;w++)if(h[w].ord == x)
{
swap(h[w],h[ind]);
break;
}
ind --;
up(w);
down(w);
}
if(o == 3)
{
printf("%d\n",h[1].val);
}
}
}