Cod sursa(job #3361236)

Utilizator proflaurianPanaete Adrian proflaurian Data 22 iulie 2026 10:29:56
Problema Heapuri Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("heapuri.in");
ofstream g("heapuri.out");
const int N = 200000;
priority_queue<pair<int,int>> pq;
bitset<N> elim;
int op,tip,val,poz;
int main()
{
    f>>op;
    for(int i=1;i<=op;i++)
    {
        f>>tip;
        if(tip==1)
        {
            f>>val;
            poz++;/// determin la ce pozitie a intrat aceasta valoare
            /// in coada de priotitati adaug -valoarea si pozitia
            pq.push({-val,poz});
        }
        else if(tip==2)
        {
            f>>poz;
            /// memorez ca trebuie sa elimin valoarea de la pozitia poz
            elim[poz]=1;
            /// fac eliminarea mai tarziu
        }
        else
        {
            /// am de gasit minimul
            /// cat timp pozitia elementului din top este eliminata
            /// se elimina ce am in varf
            while(elim[pq.top().second])
                pq.pop();
            g<<-pq.top().first<<'\n';/// pentru elementul din varf afisez valoare cu -
        }
    }
    return 0;
}