Pagini recente » Cod sursa (job #143746) | Cod sursa (job #426513) | Cod sursa (job #1248866) | Cod sursa (job #2043721) | Cod sursa (job #2085124)
#include<fstream>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int n,m,i,j,k,p,cod,H[200001],poz[200001];
void push_up(int x)
{
int val;
val=H[x];
while(x>1&&val<H[x/2])
{
H[x]=H[x/2];
x/=2;
}
H[x]=val;
}
void push_down(int x)
{
int son;
do
{
son=0;
if(x<=m)
{
son=x*2;
if(x*2+1<=m && H[x*2+1]<H[x*2])
son=x*2+1;
if(H[son]<=H[x])
son=0;
}
if(son)
{
swap(H[son],H[x]);
x=son;
}
}
while(son);
}
int main()
{
f>>n;
for(i=1 ; i<=n ; ++i)
{
f>>cod;
if(cod==1)
{
f>>k;
H[++m]=k;
poz[++p]=k;
push_up(m);
}
else
if(cod==2)
{
f>>k;
for(j=1;j<=m;++j)
if(H[j]==poz[k])
{
push_down(j);
break;
}
--m;
}
else
g<<H[1]<<'\n';
}
return 0;
}