Cod sursa(job #407532)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 2 martie 2010 13:39:26
Problema Heapuri Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include<algorithm>
#include<queue>
#include<bitset>

using namespace std;
#define fs first
#define sc second
#define pb push_back
#define mp make_pair
bitset <100000> viz;
struct cmp 
{
    bool operator () ( const pair<int,int> &a , const pair<int,int> &b) const
    {
         return a>b;
         }
};
priority_queue <pair< int ,int>, vector < pair < int,int > > , cmp > q ;
void read()
{
     int x,n,c=0,t;
     scanf("%d",&n);
     for(int i=1; i<=n;i++)
     {
             scanf("%d",&t);
             if( t==1)
             {
                 scanf("%d",&x);
                 q.push (mp ( x,c++ ));
             }
             else
             if(t==2)
             {
                     scanf("%d",&x);
                     viz[ x ] =1;
             }
             else
             {
                 while( viz [ q.top().fs ] ==1 )
                 q.pop();
                 printf("%d\n",q.top().fs);
                 q.pop();
             }
             }
}
int main ()
{
    freopen("heapuri.in","r",stdin);
    freopen("heapuri.out","w",stdout);
    read();
    return 0;
}