Pagini recente » Cod sursa (job #692353) | Cod sursa (job #1951768) | Cod sursa (job #1473327) | Cod sursa (job #442287) | Cod sursa (job #2899646)
#include <fstream>
#include <set>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
char operatie[11];
set<int>::iterator i, i1, i2, i3;
multiset<int>::iterator indexDif;
int x;
set<int> zeap;
multiset<int> diferenta;
int main()
{
while (fin >> operatie)
{
if (operatie[0] == 'I')
{
fin >> x;
if (zeap.find(x) == zeap.end())
{
zeap.insert(x);
i = zeap.find(x);
if (i != zeap.begin())
{
i1 = i;
--i1;
diferenta.insert(*i - *i1);
}
i2 = i;
++i2;
if (i2 != zeap.end())
diferenta.insert(*i2 - *i);
}
}
else if (operatie[0] == 'S')
{
fin >> x;
i = zeap.find(x);
if (i == zeap.end())
fout << -1 << '\n';
else
{
if (i != zeap.begin())
{
i1 = i;
--i1;
diferenta.erase(diferenta.find(*i - *i1));
i3 = i;
++i3;
if (i3 != zeap.end())
diferenta.insert(*i3 - *i1);
}
i2 = i;
++i2;
if (i2 != zeap.end())
diferenta.erase(diferenta.find(*i2 - *i));
zeap.erase(i);
}
}
else if (operatie[0] == 'C')
{
fin >> x;
i = zeap.find(x);
if (i != zeap.end())
fout << 1 << '\n';
else
fout << 0 << '\n';
}
else if (operatie[1] == 'A')
{
if (zeap.size() < 2)
fout << -1 << '\n';
else
{
i2 = zeap.end();
--i2;
i1 = zeap.begin();
fout << *i2 - *i1 << '\n';
}
}
else if (operatie[1] == 'I')
{
if (diferenta.empty())
fout << -1 << '\n';
else
{
indexDif = diferenta.begin();
fout << *indexDif << '\n';
}
}
}
return 0;
}