Pagini recente » Cod sursa (job #893313) | Cod sursa (job #2068627) | Cod sursa (job #1828372) | Cod sursa (job #346098) | Cod sursa (job #2361138)
#include <bits/stdc++.h>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
vector <int> v,k;
int m,a,b,nr,poz,n,poz2,cop;
int main()
{
f>>m;
v.push_back(9999);
for(int i=1;i<=m;i++)
{
f>>a;
if(a!=3) f>>b;
if(a==1)
{
k.push_back(b);
v.push_back(b);
poz=v.size()-1;
if(v.size()>2)
for(int j=v.size()-1;j>=2;j=j/2)
if(v[j/2]<b)
{swap(v[j/2],v[poz]);poz=j/2;}
}
if(a==2)
{
poz2=0;
for(int i=1;i<v.size()-1;i++)
if(v[i]==k[b-1])
{
cop=v[i];
v[i]=v[v.size()-1];
poz2=i;
b=v[i];
i=v.size()+1;
}
nr=0;
v.pop_back();
for(int j=v.size()-1;j>=2;j=j/2)
if(v[j/2]<b)
{swap(v[j/2],v[poz]);poz=j/2;nr++;}
if(nr==0&&poz2!=0)
for(int j=poz2;j<=n;j=j*2)
{if(v[j*2]>b)
{swap(v[j/2],v[poz]);poz=j*2;}
else
if(v[j*2+1]>b)
{swap(v[j/2],v[poz]);poz=j*2;}
}
}
if(a==3)
{g<<min(v[v.size()-1],v[v.size()-2])<<'\n';
}
}
return 0;
}