Cod sursa(job #393277)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 9 februarie 2010 09:55:24
Problema Heapuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<algorithm>
using namespace std;
#include<queue>
#include<bitset>

bitset <1000000005> d;

struct cmp
{
    bool operator() (const pair<int,int> &a, const pair<int,int> &b) const
    {
        return (a.first>b.first);
    }
}; priority_queue <pair<int,int>, vector <pair <int,int> >,cmp> c;

int main ()
{
    freopen("heap.in","r",stdin);
    freopen("heap.out","w",stdout);
    int i,q,n,x,intrat=0;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
    {
        scanf("%d",&q);
        if(q==1)
        {
            scanf("%d",&x);
            c.push (make_pair (x,++intrat));
        }
        if(q==2)
        {
            scanf("%d",&x);
            d[x]=1;
        }
        if(q==3)
        {
            for(;d[c.top ().second];c.pop ());
                printf("%d\n",c.top ().first);
        }
    }
    return 0;
}