Pagini recente » Cod sursa (job #2457845) | Cod sursa (job #301025) | Cod sursa (job #2899454) | Cod sursa (job #1640086) | Cod sursa (job #2492628)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int v[200010],chron[200010],i,j,cnt,poz[200010],c,x,n,m;
int main(){
fin>>m;
for(int k=1;k<=m;k++){
fin>>c;
if(c==1){
fin>>x;
chron[++cnt]=x;
v[++n]=cnt;
poz[cnt]=n;
i=n;
while(i/2 && chron[v[i]]<chron[v[i/2]]){
swap(poz[v[i]],poz[v[i/2]]);
swap(v[i],v[i/2]);
i/=2;
}
}
if(c==2){
fin>>x;
i=poz[x];
while(i/2){
swap(poz[v[i]],poz[v[i/2]]);
swap(v[i],v[i/2]);
i/=2;
}
v[1]=v[n];
n--;
poz[v[1]]=1;
i=1;
while(2*i<=n){
if(chron[v[i]]>chron[v[2*i]] || chron[v[i]]>chron[v[2*i+1]]){
if(2*i+1<=n){
if(chron[v[2*i+1]]<chron[v[2*i]]){
swap(poz[v[i]],poz[v[2*i+1]]);
swap(v[i],v[2*i+1]);
i=2*i+1;
}else{
swap(poz[v[i]],poz[v[2*i]]);
swap(v[i],v[2*i]);
i=2*i;
}
}else{
if(chron[v[i]]>chron[v[2*i]]){
swap(poz[v[i]],poz[v[2*i]]);
swap(v[i],v[2*i]);
i=2*i;
}else
break;
}
}else
break;
}
}
if(c==3){
fout<<chron[v[1]]<<"\n";
}
}
return 0;
}