Cod sursa(job #1149812)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 22 martie 2014 11:53:02
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>

using namespace std;

int del[200000], n, op, nr;

struct elem
{
    int val, cron;
    elem(int vall=0, int cronn=0) {val=vall; cron=cronn;}
};

struct cmp
{
    bool operator()(elem x, elem y){
        return x.val > y.val;
    }
};


priority_queue<elem, vector<elem>, cmp> q;

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

    int t, nq=1;
    scanf("%d\n", &n);
    for(int i=0; i<n; i++){
        scanf("%d\n", &op);
        if(op == 1){
            scanf("%d\n", &t);
            q.push(elem(t, nq++));
        }
        else if(op == 2){
            scanf("%d\n", &t);
            del[t] = 1;
        }
        else if(op ==3){
            while(del[q.top().cron] == 1)
                q.pop();
            printf("%d\n", q.top().val);
        }
    }

    return 0;
}