Cod sursa(job #3130579)

Utilizator KrisI77Iacovita Cristian KrisI77 Data 18 mai 2023 00:25:23
Problema Zeap Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb

#include <fstream>
#include <map>

int main() {
	std::ifstream fin("zeap.in");
	std::ofstream fout("zeap.out");
	
	std::map<int, bool> map;
	while (fin.good()) {
		char c;
		int x;
		fin >> c;
		switch (c)
		{
		case 'I':
			fin >> x;
			map[x] = true;
			break;
		case 'S':
			fin >> x;
			if (map.find(x) != map.end())
				map.erase(x);
			else
				fout << -1 << '\n';
			break;
		case 'C':
			fin >> x;
			if(map.find(x) != map.end())
				fout << 1 << '\n';
			else
				fout << 0 << '\n';
			break;
		case 'M':
			fin >> c;
			if (c == 'A') {
				if (map.size() > 1)
					fout << map.rbegin()->first - map.begin()->first << '\n';
				else
					fout << -1 << '\n';
			}
			else {
				if (map.size() > 1) {
					auto end = map.end();
					--end;
					int min_diff = 999999999;
					for (auto e = map.begin(); e != end; ++e) {
						auto next = e;
						++next;
						if (next->first - e->first < min_diff)
							min_diff = next->first - e->first;
					}
					fout << min_diff << '\n';
				}
				else
					fout << -1 << '\n';
			}
			fin >> c;
			break;
		}
	}
	return 0;
}