Pagini recente » Cod sursa (job #12332) | Cod sursa (job #631725) | Cod sursa (job #1975814) | Cod sursa (job #1673196) | Cod sursa (job #1835696)
#include <iostream>
#include <fstream>
#include <vector>
#include <utility>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
vector <int> x;
void be(int uj)
{
x.push_back(uj);
int akt=x.size()-1;
while(akt/2>=1 && x[akt/2]>x[akt])
{
swap(x[akt/2],x[akt]);
akt/=2;
}
}
void torol(int poz)
{
x[poz]=x.back();
x.pop_back();
int p;
while(p!=poz)
{
p=poz;
if(p*2<x.size() && x[p*2]<x[poz]) poz=p*2;
if(p*2+1<x.size() && x[p*2+1]<x[poz]) poz=p*2+1;
swap(x[poz],x[p]);
}
}
int mini()
{
return x[1];
}
int f,g[200005],h;
int main()
{
int i,j,n,a,b;
fin>>n;
x.push_back(88);
for(i=1;i<=n;i++)
{
fin>>a;
if(a==1)
{
fin>>b;
if(x.size()==1) x.push_back(b);
else be(b);
f++;
g[f]=b;
}
if(a==2)
{
fin>>b;
h=g[b];
for(j=1;j<=x.size()-1;j++)
{
if(x[j]==h)
{
torol(j);
break;
}
}
}
if(a==3) fout<<mini()<<"\n";
}
return 0;
}