Pagini recente » Cod sursa (job #1112264) | Cod sursa (job #1558421) | Cod sursa (job #1901216) | Cod sursa (job #1320227) | Cod sursa (job #2930369)
#include <fstream>
using namespace std;
ifstream fin ("heapuri.in");
ofstream fout ("heapuri.out");
struct element
{
int nr,poz;
};
int nrr,n,ii,k,pozitia,q,intrat[200005],i,x,nr,p,ch;
element v[400005];
int main()
{
fin>>nrr;
n=0;
for (ii=1; ii<=nrr; ii++)
{
fin>>ch;
if (ch==3)
{
fout<<v[1].nr<<"\n";
continue;
}
if (ch==1)
{
fin>>x;
n++;
v[n].nr=x;
q++;
v[n].poz=q;
intrat[q]=n;
i=n;
while (i>1&&v[i].nr<v[i/2].nr)
{
swap (intrat[v[i].poz],intrat[v[i/2].poz]);
swap (v[i],v[i/2]);
i=i/2;
}
continue;
}
fin>>x;
pozitia=intrat[x];
intrat[v[n].poz]=pozitia;
v[pozitia]=v[n];
n--;
p=pozitia;
nr=p*2;
while (nr<=n)
{
if (nr+1<=n&&v[nr+1].nr<v[nr].nr)
nr++;
if (v[p].nr>v[nr].nr)
{
swap (intrat[v[p].poz],intrat[v[nr].poz]);
swap (v[p],v[nr]);
}
else
break;
p=nr;
nr=nr*2;
}
}
return 0;
}