Cod sursa(job #402391)

Utilizator cezyGrigore Cezar cezy Data 23 februarie 2010 20:33:39
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#include<algorithm>
#include<set>
using namespace std;
#define nmax 200005
int op[nmax],el[nmax],poz[nmax];
int n;
struct comp 
{
	bool operator () (int i,int j)
	{
		return el[i]>el[j];
	}
};
multiset<int> ms;
void citire ()
{
	int i;
	ifstream fin("heapuri.in");
	fin>>n;
	for(i=1;i<=n;i++)
	{
		fin>>op[i];
		if(op[i]!=3) fin>>el[i];
	}
	fin.close();
}
int main ()
{
	int i,k=0,t;
	multiset<int>::iterator it;
	citire();
	ofstream fout("heapuri.out");
	for(i=1;i<=n;i++)
	{
		if(op[i]==1) ms.insert(el[i]),k++,poz[k]=el[i];
		if(op[i]==2) 
		{
			t=poz[el[i]];
			ms.erase(t);
		}
		if(op[i]==3) fout<<*ms.upper_bound(0)<<"\n";
	}
	fout.close();
	return 0;
}