Cod sursa(job #2899713)

Utilizator bianca2002Bianca bianca2002 Data 9 mai 2022 00:51:58
Problema Zeap Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.18 kb
#include <iostream>
#include <fstream>
#include <set>

using namespace std;

ifstream f("zeap.in");
ofstream g("zeap.out");



char s[11];
int x;
set<int> z;
multiset<int> z2;

int main()
{
    while (f>> s)
    {
        if (s[0] == 'I')
        {
            f >> x;
            if (z.find(x) == z.end())
            {
                z.insert(x);
                auto i = z.find(x);

                if (i != z.begin())
                {
                    auto j = i;
                    j--;
                    z2.insert(*i - *j);
                }

                auto k = i;
                k++;
                if (k != z.end())
                    z2.insert(*k - *i);
            }
        }
        else if (s[0] == 'S')
        {
            f >> x;
            auto i = z.find(x);
            if (i == z.end())
                g << -1 << endl;
            else
            {
                if (i != z.begin())
                {
                    auto j = i;
                    j--;
                    z2.erase(z2.find(*i - *j));

                    auto l = i;
                    l++;
                    if (l != z.end())
                        z2.insert(*l - *j);
                }

                auto k = i;
                k++;
                if (k != z.end())
                    z2.erase(z2.find(*k - *i));

                z.erase(i);
            }
        }
        else if (s[0] == 'C')
        {
            f >> x;
            auto i = z.find(x);
            if (i != z.end())
                g << 1 << '\n';
            else
                g << 0 << '\n';
        }
        else if (s[1] == 'A')
        {
            if (z.size() < 2)
                g << -1 << '\n';
            else
            {
                auto k = z.end();
                k--;
                auto j = z.begin();

                g << *k - *j << '\n';
            }
        }
        else if (s[1] == 'I')
        {
            if (z2.empty())
                g << -1 << '\n';
            else
            {
                auto m = z2.begin();
                g<< *m << '\n';
            }
        }
    }

}