Cod sursa(job #724279)

Utilizator deneoAdrian Craciun deneo Data 26 martie 2012 13:08:41
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <queue>
using namespace std;

#define MAXN 300000

ifstream fin("heapuri.in");
ofstream fout("heapuri.out");

priority_queue< pair<int, int> , vector< pair<int, int> >, greater < pair <int, int> > > heap;
int n, deleted[MAXN];

int main() {
    int i, op, nr, elem = 0;
    fin >> n;
    for (i = 1; i <= n; ++i) {
        fin >> op;
        switch(op) {
            case 1: {
                fin >> nr;
                heap.push(make_pair(nr, ++elem));
                break;
            }
            case 2: {
                fin >> nr;
                deleted[nr] = 1;
                break;
            }
            case 3: {
                while(deleted[heap.top().second])
                    heap.pop();
                fout << heap.top().first << "\n";
                break;
            }
        }
    }
    fout.close();
    return 0;
}