Pagini recente » Cod sursa (job #1289140) | Cod sursa (job #2536616) | Cod sursa (job #2233244) | Cod sursa (job #1735328) | Cod sursa (job #2153644)
#include <fstream>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int n,x,cod,v[200005],poz=0,stj=0,inserat[200005],it=1;
int parent (int poz)
{
if(poz%2==0) return poz/2-1;
else return poz/2;
}
int gaseste (int x)
{
for(int i=0;i<stj; i++)
{
if(inserat[x]==v[i]) return i;
}
return 0;
}
void elimina(int x)
{
poz=gaseste(x);
swap(v[poz],v[stj]);
v[stj]=0; stj--;
}
void top()
{
fout<<v[0]<<'\n';
}
void insereaza(int x)
{
inserat[it]=x;
v[stj]=x;
poz=stj;
while(x<v[parent(poz)])
{
swap(v[poz],v[parent(poz)]);
poz=parent(poz);
if(poz==0) break;
}
stj++;it++;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>cod;
if(cod==1)
{
fin>>x; insereaza(x);
}
else if (cod==2)
{
fin>>x; elimina(x);
}
else
{
top();
}
}
return 0;
}