Cod sursa(job #1128707)

Utilizator QuickFingersQuick Fingers QuickFingers Data 27 februarie 2014 18:20:54
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>

#define x first
#define y second
#define NMAX 200007

using namespace std;

priority_queue< pair< int, int>, vector< pair< int, int> >, greater< pair< int, int > > > q;
vector< int > v;
bool Viz[NMAX];
int Q;

int main(){
    freopen("heapuri.in", "r", stdin);
    freopen("heapuri.out", "w", stdout);
    for(scanf("%d", &Q); Q > 0; --Q){
        int Tip, X;
        scanf("%d", &Tip);
        if(Tip == 1){
            scanf("%d", &X);
            v.push_back(X);
            q.push(make_pair(v[v.size() - 1], v.size()));
        }
        if(Tip == 2){
            scanf("%d", &X);
            Viz[X] = 1;
        }
        if(Tip == 3){
            while(Viz[q.top().y])
                q.pop();
            printf("%d\n", q.top().x);
        }
    }
    return 0;
}