Cod sursa(job #1525503)

Utilizator heracleRadu Muntean heracle Data 15 noiembrie 2015 09:57:42
Problema Zeap Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <cstdio>
#include <set>
#include <map>
FILE* in=fopen("zeap.in","r");
FILE* out=fopen("zeap.out","w");

std::set<int> s;
std::multiset<unsigned int> m;

const int INF=2000000002;

int main()
{
	jibril();
	char v[20];

	s.insert(-INF/2);
	s.insert(INF);
	m.insert((unsigned int) (INF+INF/2));
	std::set<int>::iterator it;
	std::multiset<unsigned int>::iterator itmap;
	int x;
	while(fscanf(in,"%s",v)==1)
	{
		if(v[0]=='I')
		{
			fscanf(in,"%d",&x);
			it=s.upper_bound(x);it--;
			if(*it!=x)
			{
				it++;
				int v1,v2;
				v2=*it;it--;
				v1=*it;
				itmap=m.upper_bound((unsigned int)(v2-v1) );itmap--;
				m.erase(itmap);
				s.insert(x);
				m.insert((unsigned int) (v2-x));
				m.insert((unsigned int) (x-v1));
			}
		}
		else if(v[0]=='S')
		{
			fscanf(in,"%d",&x);
			it=s.upper_bound(x);it--;
			if(*it==x)
			{
				int v1,v2;it++;
				v2=*it;it--;it--;
				v1=*it;it++;
				s.erase(it);
				itmap=m.upper_bound( (unsigned int) (v2-x));itmap--;
				m.erase(itmap);
				itmap=m.upper_bound((unsigned int) (x-v1));itmap--;
				m.erase(itmap);
				m.insert((unsigned int) (v2-v1));
			}
			else
			{
				fprintf(out,"-1\n");
			}
		}
		else if(v[0]=='C')
		{
			fscanf(in,"%d",&x);
			it=s.upper_bound(x);it--;
			if(*it==x)
			{
				fprintf(out,"1\n");
			}
			else
			{
				fprintf(out,"0\n");
			}
		}
		else if(v[0]=='M' && v[1]=='A')
		{
			if(s.size()<4)
				fprintf(out,"-1\n");
			else
			{
				int rez=0;
				it=s.end();it--;it--;
				rez=*it;
				it=s.begin();it++;
				rez-=*it;
				fprintf(out,"%d\n",rez);
			}
		}
		else if(v[0]=='M' && v[1]=='I')
		{
			if(s.size()<4)
				fprintf(out,"-1\n");
			else
			{
				itmap=m.begin();
				fprintf(out,"%d\n",*itmap);
			}
		}
	}

    return 0;

}