Cod sursa(job #2716888)

Utilizator rARES_4Popa Rares rARES_4 Data 5 martie 2021 21:02:54
Problema Heapuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f ("heapuri.in");
ofstream g ("heapuri.out");
int n,c,x,cnt = 1;
bool eliminat[200001];
/// facem un priority queue sa actioneze ca un min_heap
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
int main()
{
    f >> n;
    for(int i = 1; i<=n; i++)
    {
        f >> c;
        if(c == 1)
        {
            f >> x;
            /// bagam in coada numarul si al catelea a fost bagat
            pq.push({x,cnt++});
        }
        else if(c == 2)
        {
            f >> x;
            /// il notam ca eliminat
            eliminat[x] = 1;
        }
        else if(c == 3)
        {
            /// eliminam toate numerele marcate ca eliminat din varful cozii
            while(eliminat[pq.top().second])
                pq.pop();
            /// afisam cel mai mic element
            g << pq.top().first<<'\n';
        }

    }
}