Cod sursa(job #895836)

Utilizator gabriel93Robu Gabriel gabriel93 Data 27 februarie 2013 12:44:14
Problema Zeap Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<stdio.h>
#include<fstream>
#include<iostream>
#include<set>
#include<algorithm>
#define Nmax 300002
using namespace std;
char s[10];
set<int> h;

void rezolv()
{
	int i,x,maxim;
	set<int>::iterator it,it2;
	maxim=0;
	while(gets(s))
	{
		if(s[0]=='M')
		{
			it=h.begin();
			if(h.size()<2)
			{
				printf("-1\n");
				continue;
			}
			if(s[1]=='A')
				x=maxim-*it;
			else
			{
				it2=it;
				++it2;
				x=*it2-*it;
			}
			if(x<0)
				x=-x;
			printf("%d\n",x);
		}
		else
		{
			x=0;
			for(i=2;s[i]!=0;++i)
				x=x*10+s[i]-'0';
			if(s[0]=='I')
			{
				h.insert(x);
				if(maxim<x)
					maxim=x;
				continue;
			}
			if(s[0]=='C')
			{
				it=h.find(x);
				if(*it==x)
					printf("1\n");
				else
					printf("0\n");
				continue;
			}
			it=h.find(x);
			if(it==h.end())
				printf("-1\n");
			else
			{
				if(*it==maxim)
				{
					maxim=*h.begin();
					for(it2=h.begin();it2!=h.end();++it)
						if(maxim<*it2)
							maxim=*it2;
				}
				h.erase(it);
			}
		}
	}
}

int main()
{
	freopen("zeap.in","r",stdin);
	freopen("zeap.out","w",stdout);
	rezolv();
	fclose(stdin);
	fclose(stdout);
	return 0;
}