Cod sursa(job #2751890)

Utilizator almar.fetaFeta Almar almar.feta Data 16 mai 2021 01:44:47
Problema Zeap Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.13 kb
#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;
}