Pagini recente » Cod sursa (job #3030461) | Cod sursa (job #2676988) | Cod sursa (job #2809432) | Solutii Winter Challenge 2008, Runda 2 | Cod sursa (job #2751890)
#include <fstream>
#include <cstring>
#include <set>
using namespace std;
ifstream in("zeap.in");
ofstream out("zeap.out");
set <int> s;
set <int> s2;
int main()
{
char cod[4];
while(in >> cod)
{
if(strcmp(cod,"I")==0)
{
int x;
in >> x;
if(s.find(x) == s.end())
{
s.insert(x);
if(s.size() > 1)
{
auto it = s.find(x);
it--;
s2.insert(x-(*it));
}
}
}
else if(strcmp(cod,"S")==0)
{
int x;
in >> x;
if(s.find(x) != s.end())
{
if(s.size() > 2)
{
auto it = s.find(x);
auto it1 = it;
auto it2 = it;
it2++;
it1--;
s2.erase((*it2) - (*it));
s2.erase((*it) - (*it1));
s2.insert((*it2) - (*it1));
}
else if(s.size() == 2)
{
s2.erase((*s.find(x)));
}
s.erase(x);
}
else
out << -1 << "\n";
}
else if(strcmp(cod,"C")==0)
{
int x;
in >> x;
if(s.find(x) != s.end())
out << 1 << "\n";
else
out << 0 << "\n";
}
else if(strcmp(cod,"MAX")==0)
{
if(s.size() < 2)
out << -1 << "\n";
else
{
auto it1 = s.begin();
auto it2 = s.rbegin();
out << (*it2) - (*it1) << "\n";
}
}
else if(strcmp(cod,"MIN")==0)
{
if(s.size() < 2)
out << -1 << "\n";
else
{
out << (*s2.begin()) << "\n";
}
}
}
in.close();
out.close();
return 0;
}