Pagini recente » Cod sursa (job #2233947) | Cod sursa (job #3137949) | Cod sursa (job #1201030) | Cod sursa (job #2011560) | Cod sursa (job #2899640)
#include <iostream>
#include <fstream>
#include <set>
#include <map>
#include <cstring>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
string s;
int x;
set <int> z;
map <int, int> d;
int main()
{
while(f >> s) {
if(s.size() == 1)
f >> x;
if(s == "I") {
if(z.find(x) == z.end()) {
z.insert(x);
auto i = z.find(x);
auto st = i;
auto dr = i;
if(i != z.begin())
st--;
i++;
if(i!= z.end())
dr++;
i--;
if(st != i)
d[*i - *st]++;
if(dr != i)
d[*dr - *i]++;
if(st != i && dr != i)
{
d[*dr - *st]--;
if(!d[*dr - *st])
d.erase(*dr - *st);
}
}
} else if(s == "S")
{
auto i = z.find(x);
if(i == z.end())
g<<-1<<endl;
else {
auto st = i, dr = i;
if(i != z.begin())
st--;
i++;
if(i != z.end())
dr++;
i--;
if(st != i) {
d[*i - *st]--;
if(!d[*i - *st])
d.erase(*i - *st);
}
if(dr != i) {
d[*dr - *i]--;
if(!d[*dr - *i])
d.erase(*dr - *i);
}
if(st != i && dr != i)
d[*dr - *st]++;
z.erase(x);
}
} else if(s == "C")
{
g << (z.find(x) != z.end()) <<endl;
}
else if(s == "MAX")
{
if(z.size() < 2)
g << -1<<endl;
else
{
auto i = z.end(); i--;
g << (*i - *z.begin()) << endl;
}
} else {
if(d.empty())
g << -1<<endl;
else
g << d.begin()->first << endl;
}
}
}