Cod sursa(job #1637270)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 7 martie 2016 16:08:55
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <queue>
#include <iostream>
#include <cstdio>
#include <bitset>
using namespace std;

int n;
bitset<200005> is;
struct cd
{
    int poz,nr;
    bool operator < (const cd &c) const
    {
        return c.nr<nr;
    }
};
priority_queue<cd> q;
int main()
{
    int i=1,tip,x,pozi=0;
    cd a,b;
    freopen("heapuri.in","r",stdin);
    freopen("heapuri.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&tip);
        if(tip==3) { while(!is[ q.top().poz ]) q.pop(); printf("%d\n",q.top().nr); }
        else
        {
            scanf("%d",&x);
            if(tip==2) is[x]=0;
            if(tip==1) { pozi++; a.poz=pozi; a.nr=x; q.push(a); is[pozi]=1; }
        }
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}