Pagini recente » Cod sursa (job #3137916) | Cod sursa (job #667821) | Cod sursa (job #2581111) | Cod sursa (job #1926493) | Cod sursa (job #2323379)
#include <fstream>
#include <set>
using namespace std;
ifstream cin ("zeap.in");
ofstream cout ("zeap.out");
set <int> zeap, zeapmin;
string s;
int x, mind = 2e9;
bool search(int x) {
return ((zeap.find(x) != zeap.end()) ? 1 : 0);
}
int main() {
while(cin >> s) {
if(s == "I") {
cin >> x;
if(search(x))
cout << "-1\n";
else {
zeap.insert(x);
auto it = zeap.find(x);
auto it2 = it, it3 = it; it2--; it3++;
if(it != zeap.begin())
zeapmin.insert(*it - *it2);
if(it3 != zeap.end())
zeapmin.insert(*it3 - *it);
}
} else if(s == "S") {
cin >> x;
if(!search(x))
cout << "-1\n";
else {
auto it = zeap.find(x), it2 = it, it3 = it; it2--; it3++;
if(it != zeap.begin())
zeapmin.erase(*it - *it2);
if(it3 != zeap.end())
zeapmin.erase(*it3 - *it);
if(it != zeap.begin() && it3 != zeap.end())
zeapmin.insert(*it3 - *it2);
zeap.erase(x);
}
} else if(s == "C") {
cin >> x;
cout << search(x) << "\n";
} else if(s == "MAX") {
auto it = zeap.end(), it2 = zeap.begin(); it--;
cout << (zeap.size() < 2 ? -1 : *it - *it2) << "\n";
} else {
cout << (zeap.size() < 2 ? -1 : *(zeapmin.begin())) << "\n";
}
}
return 0;
}