Cod sursa(job #2270565)

Utilizator andreiomd1Onut Andrei andreiomd1 Data 27 octombrie 2018 11:35:27
Problema Heapuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX=(2*(1e5)+5);

priority_queue <pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> H;

int N, i, X, cod, cnt;

bool used[NMAX];

int main()
{
    freopen("heapuri.in", "r", stdin);
    freopen("heapuri.out", "w", stdout);

    scanf("%d", &N);

    for(i=1; i<=N; i++)
    {
        scanf("%d", &cod);

        if(cod==1)
        {
            scanf("%d", &X);

            cnt++;

            H.push({X, cnt});
        }
        else if(cod==2)
        {
            scanf("%d", &X);

            used[X]=true;
        }
        else
        {
            while(!H.empty() && used[H.top().second]==true)
                H.pop();

            printf("%d\n", H.top().first);
        }
    }

    return 0;
}