Cod sursa(job #1024990)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 9 noiembrie 2013 13:22:07
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<queue>

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

using namespace std;

priority_queue < pair<int, int> , vector< pair<int, int> >, greater<pair<int, int> > > q;
int Tip, n, x, Viz[NMAX], v[NMAX];

int main(){
    freopen("heapuri.in", "r", stdin);
    freopen("heapuri.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n; ++ i){
        scanf("%d", &Tip);
        if(Tip == 1){
            scanf("%d", &x);
            v[++ v[0]] = x;
            q.push(make_pair(v[v[0]], v[0]));
        }
        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;
}