Pagini recente » Cod sursa (job #1849811) | Cod sursa (job #228689) | Cod sursa (job #1287369) | Cod sursa (job #379094) | Cod sursa (job #249408)
Cod sursa(job #249408)
#include<stdio.h>
#include<string.h>
long h[200000],n,i,p,aa,a[200000],ha[200000],hp[200000],li,j,lli,up;
void CombHeap(long i,long n)
{long v=h[i],tata=i,fiu=2*i;
while(fiu<=n)
{if(fiu<n)
if(h[fiu]>h[fiu+1])++fiu;
if(v>h[fiu])
{h[tata]=h[fiu];
tata=fiu;
fiu*=2;}
else
fiu=n+1;}
h[tata]=v;}
void CreareHeap(long n)
{
long i;
for(i=n/2;i;--i)
CombHeap(i,n);
}
int main()
{
freopen("heapuri.in","r",stdin);
freopen("heapuri.out","w",stdout);
scanf("%ld",&n);up=0;
for(i=1;i<=n;++i)
{scanf("%ld",&p);
if(p<3)scanf("%ld",&aa);
if(p==1){a[++lli]=li+1;ha[++li]=aa;hp[li]=lli;}
if(p==2){for(j=a[aa];j<=li-1;++j){ha[j]=ha[j+1];hp[j]=hp[j+1];--a[hp[j]];}a[aa]=n;--li;}
if(p==3){if(up!=3){memset(h,0,sizeof(h));memcpy(h,ha,sizeof(ha));CreareHeap(li);}printf("%ld\n",h[1]);}
up=p;}
return 0;
}