Pagini recente » Cod sursa (job #582585) | Cod sursa (job #2790543) | Cod sursa (job #2686942) | Cod sursa (job #1884815) | Cod sursa (job #2911898)
#include <fstream>
using namespace std;
ifstream fin ("heapuri.in");
ofstream fout ("heapuri.out");
int n,m,i,c,p,j,x,nr,poz[200005],pozitia[200005],pozpoz,v[200005];
int main()
{
fin>>m;
n=0;
for (j=1; j<=m; j++)
{
fin>>c;
if (c==1)
{
fin>>x;
n++;
nr++;
v[n]=x;
poz[n]=nr;
pozitia[nr]=n;
i=n;
while (i>1&&v[i]<v[i/2])
{
swap (v[i],v[i/2]);
swap (pozitia[poz[i]],pozitia[poz[i/2]]);
swap (poz[i],poz[i/2]);
i=i/2;
}
}
else if (c==3)
fout<<v[1]<<"\n";
else if (c==2)
{
fin>>x;
pozpoz=pozitia[x];
v[pozpoz]=v[n];
n--;
p=pozpoz;
nr=p*2;
while (nr<=n)
{
if (nr+1<=n&&v[nr+1]<v[nr])
nr++;
if (v[p]>v[nr])
swap (v[p],v[nr]);
else
break;
p=nr;
nr=nr*2;
}
}
}
return 0;
}