Cod sursa(job #394578)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 11 februarie 2010 10:00:13
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<algorithm>
#include<bitset>
#include<queue>
using namespace std;

#define mp make_pair
#define dim 200005
#define fs first
#define sc second
int i,in;
bitset <dim> d;
struct cmp
{
    bool operator () ( const pair <int,int> &a , const pair <int,int> &b) const
    {
        return a.fs>b.fs;
    }   
};
priority_queue < pair <int,int> , vector<pair <int,int> > ,cmp> q;

int main ()
{
    freopen("heapuri.in","r",stdin);
    freopen("heapuri.out","w",stdout);
    int m,t,x;
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d",&t);
        if(t==1)
        {
            scanf("%d",&x);
            q.push (mp (x,++in));
        }
        else
        if(t==2)
        {
            scanf("%d",&x);
            d[x]=1;
        }
        else
        {
            for( ; d[q.top ().sc] ; q.pop () );
            printf("%d\n",q.top().fs);
    }
    }
}