Pagini recente » Cod sursa (job #896945) | Cod sursa (job #1680477) | Borderou de evaluare (job #238045) | Cod sursa (job #771457) | Cod sursa (job #407553)
Cod sursa(job #407553)
#include<algorithm>
#include<queue>
#include<bitset>
#include<ctype.h>
using namespace std;
#define fs first
#define sc second
#define pb push_back
#define mp make_pair
#define buf 500
bitset <200004> viz;
char s[buf];
int k;
void r(int &val )
{
while ( !isdigit ( s[ k ] ))
if( ++k == buf )
{
k=0;
fread ( s , 1,buf , stdin);
}
val=0;
while ( isdigit ( s [ k] ))
{
val= val*10 + s[k] - '0';
if( ++k==buf )
{
k=0;
fread ( s,1,buf , stdin);
}
}
}
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()
{
k=buf-1;
int x,n,c=0,t;
r(n);
for(int i=1; i<=n;i++)
{
//scanf("%d",&t);
r(t);
if( t==1)
{
//scanf("%d",&x);
r(x);
q.push (mp ( x,++c ));
}
else
if(t==2)
{
// scanf("%d",&x);
r(x);
viz[ x ] =1;
}
else
{
while( viz [ q.top().sc ] ==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;
}