Pagini recente » Cod sursa (job #3330918) | Cod sursa (job #2244745) | Cod sursa (job #2304252) | Cod sursa (job #3316381) | Cod sursa (job #3315018)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
#define cin fin
#define cout fout
int n,m,v[200001];
int _size;
int op,x,a[200001],ordine;
int father(int nod)
{
return nod/2;
}
int left(int nod)
{
return nod*2;
}
int right(int nod)
{
return nod*2+1;
}
void shift_up(int i)
{
if (i > _size) return;
if (i == 1) return;
if (v[i] < v[father(i)])
{
swap(v[i],v[father(i)]);
}
shift_up(father(i));
}
void shift_down(int i)
{
if (i > _size) return;
int swapID = i;
if (left(i) <= _size && v[left(i)] < v[i]) swapID=left(i);
if (right(i) <= _size && v[right(i)] < v[swapID]) swapID=right(i);
if (swapID != i) {swap(v[i],v[swapID]);
shift_down(swapID);}
return;
}
int main() {
cin >> n;
v[_size] = -1;
for (int i = 1; i <= n; i++)
{
cin >> op;
if (op == 1)
{
cin >> x;
a[++ordine] = x;
v[++_size] = x;
shift_up(_size);
}
if (op == 2)
{
cin >> x;
for (int i = 1; i <= n; i++)
{
if (v[i] == a[x]) {x=i;
break;}
}
if (x!=-1){
swap(v[x],v[_size]);
_size--;
shift_down(x);
shift_up(x);
}
}
if (op == 3)
{
cout << v[1] << endl;
}
}
}