Cod sursa(job #1101017)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 7 februarie 2014 20:25:13
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <queue>
#define Nmax 200099
#define mp make_pair
#define x first
#define y second
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");

bool eliminat[Nmax];
priority_queue< pair<int, int>, vector< pair<int, int> >, greater< pair<int, int> > > pq;

int N,K;

int main()
{
    f>>N;
    for (int i=1; i<=N; ++i)
    {
        int op;
        f>>op;
        if (op == 1)
        {
            int val; f>>val;
            pq.push(mp(val,++K));
        }
        else
        if (op == 2)
        {
            int poz; f>>poz;
            eliminat[poz]=1;
        }
        else
        {
            while (eliminat[pq.top().y]) pq.pop();
            g<<pq.top().x<<'\n';
        }
    }
    f.close();g.close();
    return 0;
}