Pagini recente » Cod sursa (job #2092732) | Cod sursa (job #2107191) | Cod sursa (job #806067) | Cod sursa (job #1541158) | Cod sursa (job #2323474)
#include <fstream>
#include <set>
#define its set <int> :: iterator
using namespace std;
ifstream cin ("zeap.in");
ofstream cout ("zeap.out");
set <int> zeap;
multiset <int> zeapmin;
string s;
int x, cnt;
bool search(int x) {
return (zeap.find(x) != zeap.end() ? 1 : 0);
}
void rem(its it, its it2, its it3) {
its i = zeapmin.find(*it - *it2);
if(it != zeap.begin() && i != zeapmin.end())
zeapmin.erase(i);
its j = zeapmin.find(*it3 - *it);
if(it3 != zeap.end() && j != zeapmin.end())
zeapmin.erase(j);
}
int main() {
while(cin >> s) {
cnt++;
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++;
rem(it, it2, it3);
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;
}