Cod sursa(job #870604)

Utilizator mihai27Mihai Popescu mihai27 Data 3 februarie 2013 18:14:42
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>

using namespace std;

ifstream in("heapuri.in");
ofstream out("heapuri.out");

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

int ok[200001],a[200001],i,t,x,y,nr;
priority_queue<pair<int,int> , vector< pair<int,int> >,cmp> Q;

int main()
{
	in>>t;
	
	for (i=1;i<=t;i++)
	{
		in>>x;
		if (x==1)
		{
			in>>a[++nr];
			Q.push(make_pair(a[nr],nr));
		}
		if (x==2)
		{
			in>>y;
			ok[y]=1;
		}
		if (x==3)
		{
			while (ok[Q.top().second]) Q.pop();
			out<<Q.top().first<<'\n';
		}
	}
}