Cod sursa(job #2897747)

Utilizator NFJJuniorIancu Ivasciuc NFJJunior Data 4 mai 2022 18:31:59
Problema Zeap Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
#define cin f
#define cout g

set < int > numbers, dif;

int main()
{
	string s;
	while(cin >> s)
	{
		int x;
		set < int >::iterator it, it1, it2;
		if(s[0] == 'I')
		{
			cin >> x;
			it = numbers.find(x);
			if(it == numbers.end())
			{
				numbers.insert(x);
				it = numbers.find(x);
				it1 = it, it2 = it;
				it1 --, it2 ++;
				if(it != numbers.begin())
				{
					x = *it - *it1;
					dif.insert(x);
				}
				if(it != -- numbers.end())
				{
					x = *it2 - *it1;
					dif.insert(x);
				}
				if(it != numbers.begin() and it != -- numbers.end())
				{
					x = *it2 - *it1;
					dif.erase(x);
				}
			}
		}
		else if(s[0] == 'S')
		{
			cin >> x;
			it = numbers.find(x);
			if(it != numbers.end())
			{
				it1 = it, it2 = it;
				it1 --, it2 ++;
				if(it != numbers.begin())
				{
					x = *it - *it1;
					dif.erase(x);
				}
				if(it != -- numbers.end())
				{
					x = *it2 - *it1;
					dif.erase(x);
				}
				if(it != numbers.end() and it != -- numbers.end())
				{
					x = *it2 - *it1;
					dif.insert(x);
				}
				numbers.erase(it);
			}
			else
				cout<<-1<<'\n';
		}
		else if(s[0] == 'C')
		{
			cin >> x;
			it = numbers.find(x);
			if(it == numbers.end())
				cout<<0<<'\n';
			else
				cout<<1<<'\n';
		}
		else if(s[1] == 'A')
		{
			if(numbers.size() > 1)
				cout<<*(-- numbers.end()) - *(numbers.begin())<<'\n';
			else
				cout<<-1<<'\n';
		}
		else
		{
			if(numbers.size() > 1)
				cout<<*dif.begin()<<'\n';
			else
				cout<<-1<<'\n';
		}
	}
	return 0;
}