Pagini recente » Cod sursa (job #1775771) | Cod sursa (job #2023220) | Cod sursa (job #2483440) | Cod sursa (job #2137056) | Cod sursa (job #2123645)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
const int INF = 2e9;
set < int > nums;
multiset < int > dist;
int main() {
nums.insert(-INF);
nums.insert(INF);
string s;
while(fin >> s) {
if(s == "I") {
int x;
fin >> x;
if(nums.count(x) == 0) {
auto hi = nums.upper_bound(x);
auto lo = hi;
--lo;
if(*hi != INF) dist.insert(*hi - x);
if(*lo != -INF) dist.insert(x - *lo);
if(*hi != INF && *lo != -INF) dist.erase(dist.find(*hi - *lo));
nums.insert(x);
}
}
if(s == "S") {
int x;
fin >> x;
if(nums.count(x)) {
nums.erase(x);
auto hi = nums.upper_bound(x);
auto lo = hi;
--lo;
if(*hi != INF) dist.erase(dist.find(*hi - x));
if(*lo != -INF) dist.erase(dist.find(x - *lo));
if(*hi != INF && *lo != -INF) dist.insert(*hi - *lo);
} else {
fout << "-1\n";
}
}
if(s == "C") {
int x;
fin >> x;
fout << min(1, (int)nums.count(x)) << "\n";
}
if(s == "MAX") {
if((int)nums.size() < 4) {
fout << "-1\n";
} else {
auto lo = nums.begin(); ++lo;
auto hi = nums.end(); --hi; --hi;
fout << *hi - *lo << "\n";
}
}
if(s == "MIN") {
if((int)nums.size() < 4) {
fout << "-1\n";
} else {
fout << *dist.begin() << "\n";
}
}
}
return 0;
}