Cod sursa(job #1117169)

Utilizator ThomasFMI Suditu Thomas Thomas Data 23 februarie 2014 10:31:48
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;

#define NMax 200001

ifstream f("heapuri.in");
ofstream g("heapuri.out");

struct d_int{int x,val;};

class Compare {
public:
    bool operator()(d_int& t1, d_int& t2)
    {
       if (t1.val > t2.val) return true;
       return false;
    }
};

priority_queue<d_int, vector<d_int>, Compare> heap;

int cut[NMax];

int main()
{
    int i,n,op,nr,k=0;
    d_int u;

    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>op;
        if(op==1) {k++; f>>nr; u.x=k; u.val=nr; heap.push(u);}
        if(op==2) {f>>nr; cut[nr]=1;}
        if(op==3) {while(cut[heap.top().x]) heap.pop(); g<<heap.top().val<<"\n";}
    }

    f.close();
    g.close();
    return 0;
}