Cod sursa(job #1489273)
Utilizator | Data | 20 septembrie 2015 21:28:04 | |
---|---|---|---|
Problema | Zeap | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.18 kb |
#include <cstdio>
#include <set>
using namespace std;
FILE* f = fopen("zeap.in", "r");
FILE* h = fopen("zeap.out", "w");
set<int> Z;
multiset<int> minZ;
int main() {
char s[4];
while(fscanf(f, "%s", &s) != EOF) {
if(s[0] == 'I') {
int x;
fscanf(f, "%d", &x);
if(Z.find(x) == Z.end()) {
Z.insert(x);
set<int>::iterator it;
set<int>::iterator itt;
it = Z.find(x);
if(it != Z.begin()) {
itt = it;
--itt;
minZ.insert(*it - *itt);
}
itt = it;
++itt;
if(itt != Z.end()) {
minZ.insert(*itt - *it);
}
}
} else {
if(s[0] == 'S') {
int x;
fscanf(f, "%d", &x);
set<int>::iterator it;
set<int>::iterator itt;
it = Z.find(x);
if(it == Z.end()) {
fprintf(h, "-1\n");
} else {
if(it != Z.begin()) {
itt = it;
--itt;
minZ.erase(minZ.find(*it - *itt));
set<int>::iterator itt2;
itt = it;
itt2 = it;
--itt;
++itt2;
if(itt2 != Z.end()) {
minZ.insert(*itt2 - *itt);
}
}
itt = it;
++itt;
if(itt != Z.end()) {
minZ.erase(minZ.find(*itt - *it));
}
Z.erase(it);
}
} else {
if(s[0] == 'C') {
int x;
fscanf(f, "%d", &x);
set<int>::iterator it;
it = Z.find(x);
if(it == Z.end()) {
fprintf(h, "0\n");
} else {
fprintf(h, "1\n");
}
} else {
if(s[1] == 'A') {
if(Z.size() < 2) {
fprintf(h, "-1\n");
} else {
set<int>::iterator itt;
set<int>::iterator itt2;
itt = Z.begin();
itt2 = Z.end();
--itt2;
fprintf(h, "%d\n", *itt2 - *itt);
}
} else {
if(Z.size() < 2) {
fprintf(h, "-1\n");
} else {
multiset<int>::iterator itt;
itt = minZ.begin();
fprintf(h, "%d\n", *itt);
}
}
}
}
}
}
return 0;
}