Pagini recente » Cod sursa (job #527535) | Cod sursa (job #1929507) | Cod sursa (job #2192451) | Cod sursa (job #1819022) | Cod sursa (job #449934)
Cod sursa(job #449934)
#include<iostream>
#include<algo.h>
#include<fstream>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
long int v[200001],w[200001],n,m,db,c,a;
long int p;
long int keres(int poz)
{
/*long int kezd=1;
while(kezd<=db&&w[kezd]!=a) kezd++;
return kezd;*/
if(w[poz]==a) return poz;
else
if(w[poz]<a)
{
if(2*poz<=db)
{
int jobb=keres(2*poz);
if(jobb==-1)
if(2*poz+1<=db)
return keres(2*poz+1);
else;
else return jobb;
}
}else return -1;
}
int main()
{
fin>>n;
m=0;
db=0;
for(long int i=1;i<=n;i++)
{
fin>>c;
switch(c){
case 1:
m++;
fin>>v[m];
db++;
w[db]=v[m];
make_heap(w+1,w+db+1,greater<int>()) ;
break;
case 2:
fin>>a;
a=v[a];
p=keres(1);
w[p]=w[db];
db--;
make_heap(w+1,w+db+1,greater<int>());
break;
case 3:
fout<<w[1]<<"\n";
}
}
return 0;
}