Pagini recente » Cod sursa (job #1498696) | Cod sursa (job #2133034) | Cod sursa (job #1669020) | Cod sursa (job #154141) | Cod sursa (job #2739421)
#include <fstream>
#include <queue>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
priority_queue<pair<int, int>> Heap; //heap de maxim
int E[200000]; //Vector de frecventa pentru lazy deletion
int main()
{
int pos = 1,n,opt,x;
f >> n;
for (int i = 0; i < n; i++) {
f >> opt;
switch (opt) {
case 1:
f >> x;
Heap.push({ -x,pos }); //se insereaza -x pentru ca priority_queue-ul este Heap de maxim (se putea declara si invers dar nu stiu cum) iar asta inverseaza ordinea
pos++;
break;
case 2:
f >> x;
E[x] = 1; //se noteaza elementul ca fiind sters
break;
case 3:
while (E[Heap.top().second] == 1) {
Heap.pop();
}
g << -Heap.top().first << "\n";
break;
}
}
}