Pagini recente » Cod sursa (job #51206) | Cod sursa (job #367455) | Cod sursa (job #2944669) | Cod sursa (job #2266460) | Cod sursa (job #2770182)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
struct imp
{
int h,v;
};
int n,q,a,nr,orm,elm;
imp val[200001];
void push (int poz)
{
imp aux;
while (poz>1)
{
if (val[poz].v>val[poz/2].v)
{
return ;
}
else
{
aux=val[poz];
val[poz]=val[poz/2];
val[poz/2]=aux;
poz=poz/2;
}
}
}
void pop (int poz)
{
imp aux;
int y;
while (2*poz<=nr)
{
y=2*poz;
if (2*poz+1<=nr && val[y].v>val[y+1].v)
{
y++;
}
if (val[poz].v<val[y].v)
{
return ;
}
else
{
aux=val[poz];
val[poz]=val[y];
val[y]=aux;
/*v[h[poz]]=v[h[y]];
v[h[y]]=aux;
aux=h[poz];
h[poz]=h[y];
h[y]=aux;*/
poz=y;
}
}
}
int main()
{
f>>n;
for (int i=1; i<=n; i++)
{
f>>q;
if (q==1)
{
f>>a;
//cout<<nr<<' '<<a<<'\n';
nr++;
val[nr].v=a;
val[nr].h=nr;
push(nr);
}
else if (q==2)
{
f>>a;
//cout<<v[h[4]]<<'\n';
//cout<<h[a]<<' ';
/*for (int j=1; j<=nr; j++)
{
cout<<val[j].h<<' '<<val[j].v<<'\n';
}
cout<<'\n';*/
int ok=0;
for (int j=1; j<=nr && ok==0; j++)
{
//cout<<h[j]<<' '<<j<<'\n';
if (val[j].h==a)
{
imp aux=val[j];
ok=1;
val[j]=val[nr];
val[nr]=aux;
}
}
/*for (int j=1; j<=nr; j++)
{
cout<<val[j].h<<' '<<val[j].v<<'\n';
}
cout<<'\n';*/
nr--;
//push(nr);
pop(1);
//cout<<v[h[1]]<<'\n';
// cout<<a<<' '<<afis[a]<<'\n';
//elim(a,nr);
//cout<<afis[a]<<'\n';
}
else
{
g<<val[1].v<<'\n';
}
/* cout<<'\n';
for (int i=1; i<=nr; i++)
cout<<v[h[i]]<<' ';*/
}
/*cout<<'\n';
for (int i=1; i<=nr; i++)
cout<<v[i]<<' ';*/
return 0;
}