Pagini recente » Cod sursa (job #1127676) | Cod sursa (job #1254043) | Cod sursa (job #1614978) | Cod sursa (job #1572178) | Cod sursa (job #2085118)
#include<fstream>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int N,n,i,j,k,p,cod,H[200001],poz[200001];
void push_up(int x){
int 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<=n)
{
son=x*2;
if(x*2+1<=n&&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)
{
if(cod==3)
g<<H[1]<<'\n';
else
{
f>>k;
if(cod==1){
H[++n]=k;
poz[++p]=k;
push_up(n);
}
else{
for(i=1;i<=n;i++)
if(H[i]==poz[k])break;
push_down(i);
n--;}
}
}
return 0;
}