Pagini recente » Cod sursa (job #1480996) | Cod sursa (job #4542) | Cod sursa (job #599446) | Cod sursa (job #1758378) | Cod sursa (job #1791965)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct Numar
{
int v, i;
};
bool cmp(const Numar& a, const Numar& b)
{
return a.v > b.v;
}
vector<Numar> v;
char a[1000000001] = {0};
int n, i, m = 0;
int main()
{
int op, x;
freopen("heapuri.in", "r", stdin);
freopen("heapuri.out", "w", stdout);
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &op);
if(op == 1)
{
Numar nr;
scanf("%d", &x);
nr.v = x;
nr.i = m++;
v.push_back(nr);
push_heap(v.begin(), v.end(), cmp);
}
else if(op == 2)
{
scanf("%d", &x);
a[x] = 1;
}
else
{
while(a[v.front().i] == 1)
{
pop_heap(v.begin(), v.end(), cmp);
v.pop_back();
}
printf("%d\n", v.front().v);
}
}
return 0;
}