Cod sursa(job #1322305)

Utilizator sanzianaioneteIonete Sanziana sanzianaionete Data 19 ianuarie 2015 22:23:29
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
#include<queue>
#include<vector>
#define INF 200005

using namespace std;

struct elem
{
    int v,poz;
};

class cmp
{
    public: bool operator()(elem e1,elem e2)
    {
        return e1.v>e2.v;
    }
};

bool check[INF];
priority_queue<elem,vector<elem>,cmp> Q;
int n;

int main()
{
    freopen("heapuri.in","r",stdin);
    freopen("heapuri.out","w",stdout);
    scanf("%d",&n);
    int nr=0;
    for(int i=0;i<n;++i)
    {
        int c,a;
        scanf("%d",&c);
        if(c==1){elem e;scanf("%d",&e.v);e.poz=++nr;Q.push(e);}
        else if(c==2){scanf("%d",&a);check[a]=1;}
        else
            {
                while(Q.size()>0&&check[Q.top().poz])Q.pop();
                printf("%d\n",Q.top().v);
            }
    }
    return 0;
}