Cod sursa(job #1757970)

Utilizator trutruvasilicaHuhurez Marius trutruvasilica Data 16 septembrie 2016 10:29:27
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <queue>
#include <utility>
#include <vector>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
bool uz[200001];
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;
int main()
{
    int i,a,b,n,nr=0;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a;
        if(a==1)
        {
            nr++;
            fin>>b;
            Q.push(make_pair(b,nr));
        }
        if(a==2)
        {
            fin>>b;
            uz[b]=1;
        }
        if(a==3)
        {
            while(uz[Q.top().second]) Q.pop();
            fout<<Q.top().first<<"\n";
        }
    }
}