Cod sursa(job #1325363)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 23 ianuarie 2015 20:33:53
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <queue>
#include <iostream>
#define fin "heapuri.in"
#define fou "heapuri.out"
using namespace std;
int sir[200001];
struct coada
{
     int val,pozi;

    bool operator < (const coada &t) const
    {
        return t.val < val;
    }
};

priority_queue <coada> c;

int main()
{
    ifstream t1(fin);
    ofstream t2(fou);
    int i,j,poz,n,var,nr;
    coada num;
    t1>>n; poz=0;
    for(i=1;i<=n;i++)
    {
        t1>>var;
        if(var==1) { t1>>nr; poz++; sir[poz]=nr; num.val=nr; num.pozi=poz; c.push(num); }
        if(var==2) { t1>>nr; sir[nr]=0; }
        if(var==3) { num=c.top(); while(sir[num.pozi]==0) { c.pop(); num=c.top(); } t2<<num.val<<'\n'; }
        //for(j=1;j<=poz;j++) cout<<sir[j]<<' '; cout<<'\n';
    }
    t1.close();
    t2.close();
    return 0;
}