Pagini recente » Cod sursa (job #930052) | Cod sursa (job #2845428) | Cod sursa (job #1578828) | Cod sursa (job #1135253) | Cod sursa (job #2955178)
#include <fstream>
#define NMAX 200000
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int n,cnt,x,nr[NMAX],p,H[NMAX];
void inserare(int x);
void stergere(int x);
int main()
{
int i,p=0,cer;
fin>>n;
for(i=1; i<=n; i++)
{
fin>>cer;
if(cer==1)
{
fin>>nr[++p];
inserare(p);
}
else if(cer==2)
{
fin>>x;
stergere(x);
}
else if(cer==3)
{
fout<<nr[H[1]]<<'\n';
}
}
return 0;
}
void inserare(int x)
{
int poz=cnt+1;
int tpoz=poz/2;
while(tpoz>0 && nr[H[tpoz]]>nr[x])
{
H[poz]=H[tpoz];
poz=tpoz;
tpoz=poz/2;
}
H[poz]=x;
cnt++;
}
void stergere(int x)
{
int i,poz,tpoz;
for(i=1;i<=cnt;i++)
if(H[i]==x)
{
H[i]=H[cnt];
cnt--;
tpoz=i;
poz=2*i;
while(poz<=cnt && nr[H[tpoz]]>nr[x])
{
H[tpoz]=H[poz];
tpoz=poz;
poz=tpoz*2;
}
}
}