Cod sursa(job #827584)

Utilizator plusplusRares M. plusplus Data 2 decembrie 2012 12:33:08
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#include <queue>
#include <algorithm>
#define NMAX 200001

using namespace std;

FILE *fin = fopen("heapuri.in", "r");
FILE *fout = fopen("heapuri.out", "w");

int N, Times;
int A[NMAX];
priority_queue < pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > Q;

void ReadData() {
    int i, val, cod;
    fscanf(fin, "%d", &N);
    for(i = 1; i <= N; ++ i) {
        fscanf(fin, "%d", &cod);
        if(cod == 3) {
            while(A[Q.top().second]) Q.pop();
            fprintf(fout, "%d\n", Q.top().first);
            continue;
        }
        fscanf(fin, "%d", &val);
        if(cod == 1)
            Q.push(make_pair(val, ++ Times));
        if(cod == 2)
            A[val] = 1;
    }
}

int main() {
    ReadData();
    return 0;
}