Pagini recente » Cod sursa (job #1541506) | Cod sursa (job #509793) | Cod sursa (job #2629184) | Cod sursa (job #252926) | Cod sursa (job #1318691)
#include <cstdio>
using namespace std;
FILE *f1 = fopen("heapuri.in","r");
FILE *f2 = fopen("heapuri.out","w");
int h[200001],i,n,o,x,p[200001],l,m;
void CombHeap(int i,int n)
{int v=h[i],tata=i,fiu=2*i;
while (fiu<=n)
{if (fiu<n && p[h[fiu+1]]<p[h[fiu]]) fiu++;
if (p[v]>p[h[fiu]])
{h[tata]=h[fiu];
tata=fiu;
fiu=fiu*2;
}
else fiu=n+1;
}
h[tata]=v;
}
void push(int x)
{int aux;
while (x/2 && p[h[x]]<p[h[x/2]])
{aux=h[x];
h[x]=h[x/2];
h[x/2]=aux;
x=x/2;
}
}
void ins(int x)
{int i;
l++;m++;h[m]=l;p[l]=x;
push(l);
}
void afis()
{fprintf(f2,"%d\n",p[h[1]]);
}
void del(int x)
{int i;
p[x]=-1;
for (i=m/2;i;i--) CombHeap(i,m);
h[1]=h[m--];
CombHeap(1,m);
}
int main()
{fscanf(f1,"%d",&n);
for (i=1;i<=n;i++)
{fscanf(f1,"%d",&o);
if (o==1) {fscanf(f1,"%d",&x);ins(x);}
else if (o==2) {fscanf(f1,"%d",&x);del(x);}
else afis();
}
fclose(f1);
fclose(f2);
return 0;
}
//Challenges are what make life interesting and overcoming them is what makes life meaningful.