Cod sursa(job #2751889)

Utilizator almar.fetaFeta Almar almar.feta Data 16 mai 2021 01:04:26
Problema Zeap Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.82 kb
#include <fstream>
#include <cstring>
#include <set>

using namespace std;

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

set <int> s;

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);
        }
        else if(strcmp(cod,"S")==0)
        {
            int x;
            in >> x;
            if(s.find(x) != s.end())
                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
            {
                int val_min = -1;
                auto it1 = s.begin();
                auto aux = it1;
                s.erase((*it1));
                for(auto it2=s.begin(); it2!=s.end(); it2++)
                {
                    int dif = (*it2) - (*it1);
                    if(dif < val_min || val_min == -1)
                        val_min = dif;
                    it1 = it2;
                }
                s.insert((*aux));
                out << val_min << "\n";
            }
        }
    }
    in.close();
    out.close();
    return 0;
}