Cod sursa(job #2739421)

Utilizator cristivasileVasile George-Cristian cristivasile Data 8 aprilie 2021 11:02:58
Problema Heapuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#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;
        }
    }
    
}