Cod sursa(job #3130580)

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

#include <fstream>
#include <set>

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