Cod sursa(job #1882881)

Utilizator trutruvasilicaHuhurez Marius trutruvasilica Data 17 februarie 2017 16:13:26
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
struct cmp
{
    bool operator()(const pair<int,int> &a,const pair<int,int> &b)
    {
        return a.first>b.first;
    }
};
priority_queue<pair<int,int> ,vector<pair<int,int> >,cmp> Q;
bool uz[200001];
int main()
{
    int m,a,b,i,nr=0;
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>a;
        if(a==1)
        {
            fin>>b;
            nr++;
            Q.push(make_pair(b,nr));
        }
        else if(a==2)
        {
            fin>>b;
            uz[b]=1;
        }
        else
        {
            while(uz[Q.top().second]!=0) Q.pop();
            fout<<Q.top().first<<"\n";
        }
    }
}