Pagini recente » Cod sursa (job #2364843) | Cod sursa (job #1058250) | Cod sursa (job #2177891) | Cod sursa (job #837853) | Cod sursa (job #1043447)
#include <cstdio>
using namespace std;
int a[200001], h[200001], poz[200001], m=0, n=0;
void Swap (int i, int j)
{
int aux;
aux=h[i]; h[i]=h[j]; h[j]=aux;
aux=poz[h[i]]; poz[h[i]]=poz[h[j]]; poz[h[j]]=aux;
}
void push (int i)
{
bool ok=false;
while (ok==false)
{
if (a[i]<a[i/2]) {Swap(i,i/2); i=i/2;}
else ok=true;
}
}
void del (int p)
{
Swap(p,n);
push(p);
}
int main()
{
int i, t, x, z, p;
freopen("heapuri.in","r",stdin);
freopen("heapuri.out","w",stdout);
scanf("%d",&t);
for (i=1; i<=t; i++)
{
scanf("%d",&z);
if (z==1)
{
scanf("%d",&x); a[++n]=x; h[n]=n; poz[n]=n; m++; push(n);
}
else if (z==2)
{
scanf("%d",&p); del(p);
}
else if (z==3) printf("%d\n",a[poz[1]]);
}
fclose(stdin);
fclose(stdout);
return 0;
}