Pagini recente » Cod sursa (job #1952413) | Cod sursa (job #2395535) | Cod sursa (job #1491271) | Cod sursa (job #257481) | Cod sursa (job #2336187)
#pragma GCC optimize("03")
#include <bits/stdc++.h>
using namespace std;
ifstream in("zeap.in");
ofstream out("zeap.out");
int x;
string s;
set <int> h;
multiset <int> v;
int main() {
ios_base::sync_with_stdio(0);
in.tie(0);
while (getline(in, s)) {
if (s[0] == 'M') {
if (s[2] == 'X') {
if (h.size() < 2)
out << "-1\n";
else {
auto it = h.begin();
auto it2 = h.end();
it2--;
out << *it2 - *it << '\n';
}
} else {
if (v.empty())
out << "-1\n";
else out << *v.begin() << '\n';
}
continue;
}
int p = 0;
x = 0;
while (p < s.size() && !isdigit(s[p]))
p++;
while (p < s.size() && isdigit(s[p]))
x = 10 * x + s[p++] - '0';
if (s[0] == 'C') {
if (h.find(x) != h.end())
out << "1\n";
else out << "0\n";
continue;
}
if (s[0] == 'I') {
if (h.find(x) == h.end()) {
h.insert(x);
if (h.size() >= 2) {
auto it = h.find(x);
if (it == h.begin()) {
auto it2 = it;
it2++;
v.insert(*it2 - *it);
} else {
auto it2 = it;
it2--;
auto it3 = h.end();
it3--;
if (it == it3)
v.insert(*it - *it2);
else {
it3 = it;
it3++;
v.erase(v.find(*it3 - *it2));
v.insert(*it - *it2);
v.insert(*it3 - *it);
}
}
}
}
continue;
}
if (h.find(x) == h.end()) {
out << "-1\n";
continue;
}
if (h.size() == 1) {
h.erase(h.begin());
continue;
}
auto it = h.find(x);
if (it == h.begin()) {
auto it2 = it;
it2++;
v.erase(v.find(*it2 - *it));
h.erase(it);
continue;
}
auto it2 = it;
it2--;
auto it3 = h.end();
it3--;
if (it3 == it) {
v.erase(v.find(*it - *it2));
h.erase(it);
continue;
}
it3 = it;
it3++;
v.erase(v.find(*it - *it2));
v.erase(v.find(*it3 - *it));
v.insert(*it3 - *it2);
h.erase(it);
}
return 0;
}