Pagini recente » Cod sursa (job #1874348) | Cod sursa (job #771340) | Statistici Maxim Adelutza (adelutza) | Cod sursa (job #1120261) | Cod sursa (job #302527)
Cod sursa(job #302527)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("heapuri.in");
ofstream out("heapuri.out");
int v[200010],n,x,y,i,a[200010],k,k1,b[200010];
void corecteaza(int nod)
{
if(v[nod]<v[nod/2] && v[nod/2])
{
swap(v[nod],v[nod/2]);
swap(b[nod],b[nod/2]);
corecteaza(nod/2);
}
}
void updateaza(int nod)
{
if(2*nod<k)
{
if(v[2*nod]<v[2*nod+1])
{
swap(v[nod],v[2*nod]);
updateaza(2*nod);
}
else
{
swap(v[nod],v[2*nod+1]);
updateaza(2*nod+1);
}
}
else
if(2*nod==k)
swap(v[nod],v[2*nod]);
}
int main()
{
in>>n;
for(i=1;i<=n;i++)
{
b[i]=i;
in>>x;
if(x==3)
out<<v[1]<<"\n";
else
{
in>>y;
if(x==1)
{
a[++k]=y;
v[++k1]=y;
corecteaza(k1);
}
else
{
v[b[a[y]]]=0;
updateaza(b[a[y]]);
k--;
}
}
}
return 0;
}