Pagini recente » Cod sursa (job #1966316) | Cod sursa (job #728807) | Cod sursa (job #878027) | Cod sursa (job #833937) | Cod sursa (job #1754017)
#include <fstream>
#include <queue>
using namespace std;
int main()
{
ifstream fin;
ofstream fout;
fout.open("heapuri.out");
fin.open("heapuri.in");
auto cmp = [](pair<int, int> left, pair<int, int> right)
{
if(left.first == right.first)
return left.second > right.second;
return left.first > right.first;
};
int n, opt, x;
fin >> n;
vector<bool> v(n + 1, false);
priority_queue<int, std::vector<pair<int, int>>, decltype(cmp)> heap(cmp);
int pos = 1;
for(int i = 1; i <= n ; i++)
{
fin >> opt;
switch(opt)
{
case 1:
fin >> x;
heap.push(make_pair(x, pos++));
break;
case 2:
fin >> x;
v[x] = true;
break;
case 3:
while(v[heap.top().second])
heap.pop();
fout << heap.top().first << "\n";
break;
default:
exit(1);
}
}
fin.close();
fout.close();
return 0;
}