Pagini recente » Cod sursa (job #607042) | Cod sursa (job #2328869) | Cod sursa (job #367751) | Cod sursa (job #537944) | Cod sursa (job #1400914)
#include <fstream>
#include <set>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
char s[11];
int x;
set<int> S;
multiset<int> Smin;
int main()
{
set<int>::iterator it, it1, it2, its;
multiset<int>::iterator itmin;
while (fin >> s)
{
if (s[0] == 'I')
{
fin >> x;
if (S.find(x) == S.end())
{
S.insert(x);
it = S.find(x);
if (it != S.begin())
{
it1 = it;
--it1;
Smin.insert(*it - *it1);
}
it2 = it;
++it2;
if (it2 != S.end())
Smin.insert(*it2 - *it);
}
}
else if (s[0] == 'S')
{
fin >> x;
it = S.find(x);
if (it == S.end())
fout << -1 << '\n';
else
{
if (it != S.begin())
{
it1 = it;
--it1;
Smin.erase(Smin.find(*it - *it1));
its = it;
++its;
if (its != S.end())
Smin.insert(*its - *it1);
}
it2 = it;
++it2;
if (it2 != S.end())
Smin.erase(Smin.find(*it2 - *it));
S.erase(it);
}
}
else if (s[0] == 'C')
{
fin >> x;
it = S.find(x);
if (it != S.end())
fout << 1 << '\n';
else
fout << 0 << '\n';
}
else if (s[1] == 'A')
{
if (S.size() < 2)
fout << -1 << '\n';
else
{
it2 = S.end();
--it2;
it1 = S.begin();
fout << *it2 - *it1 << '\n';
}
}
else if (s[1] == 'I')
{
if (Smin.empty())
fout << -1 << '\n';
else
{
itmin = Smin.begin();
fout << *itmin << '\n';
}
}
}
fin.close();
fout.close();
return 0;
}