Pagini recente » Cod sursa (job #1659644) | Cod sursa (job #702167) | Cod sursa (job #903760) | Cod sursa (job #957799) | Cod sursa (job #3284990)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("heapuri.in");
ofstream out("heapuri.out");
int nr, v[200001], poz[200001];
void prelocare(int x)
{
if(v[x]<v[x/2])
{
swap(v[x], v[x/2]);
poz[nr]=poz[x/2];
poz[x/2]=x;
prelocare(x/2);
}
}
void stergere(int p)
{
if(v[p]!=0)
{
v[p]=0;
if(v[p*2]<v[p*2+1]||v[p*2+1]==0)
{
v[p]=v[p*2];
stergere(p*2);
}
else if(p*2+1<=nr)
{
v[p]=v[p*2+1];
stergere(p*2+1);
}
}
}
int main()
{
int n, op, x;
in>>n;
for(int i=1; i<=n; i++)
{
in>>op;
if(op==1)
{
in>>x;
v[++nr]=x;
poz[nr]=nr;
prelocare(nr);
}
else if(op==2)
{
in>>x;
stergere(poz[x]);
}
else out<<v[1]<<'\n';
}
return 0;
}