Pagini recente » Cod sursa (job #2296217) | Cod sursa (job #2076125) | Cod sursa (job #488897) | Cod sursa (job #2752771) | Cod sursa (job #2578846)
#include <fstream>
#include <set>
#include <map>
using namespace std;
ifstream cin ("zeap.in");
ofstream cout ("zeap.out");
string s;
int nr;
set <int> zeap;
map <int, int> dif;
int main() {
while(cin >> s) {
if(s.size() == 1)
cin >> nr;
if(s == "I") {
if(zeap.find(nr) == zeap.end()) {
zeap.insert(nr);
auto it = zeap.find(nr);
auto st = it, dr = it;
if(it != zeap.begin())
st--;
it++;
if(it != zeap.end())
dr++;
it--;
if(st != it)
dif[*it - *st]++;
if(dr != it)
dif[*dr - *it]++;
if(st != it && dr != it) {
dif[*dr - *st]--;
if(!dif[*dr - *st])
dif.erase(*dr - *st);
}
}
} else if(s == "S") {
auto it = zeap.find(nr);
if(it == zeap.end())
cout << "-1\n";
else {
auto st = it, dr = it;
if(it != zeap.begin())
st--;
it++;
if(it != zeap.end())
dr++;
it--;
if(st != it) {
dif[*it - *st]--;
if(!dif[*it - *st])
dif.erase(*it - *st);
}
if(dr != it) {
dif[*dr - *it]--;
if(!dif[*dr - *it])
dif.erase(*dr - *it);
}
if(st != it && dr != it)
dif[*dr - *st]++;
zeap.erase(nr);
}
} else if(s == "C") {
cout << (zeap.find(nr) != zeap.end()) << "\n";
} else if(s == "MAX") {
if(zeap.size() < 2)
cout << "-1\n";
else {
auto it = zeap.end(); it--;
cout << (*it - *zeap.begin()) << "\n";
}
} else {
if(dif.empty())
cout << "-1\n";
else
cout << dif.begin()->first << "\n";
}
}
return 0;
}