Cod sursa(job #2897744)

Utilizator mirceaspPetcu Mircea mirceasp Data 4 mai 2022 18:28:02
Problema Zeap Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <fstream>
#include <set>
#include <string>
#include <cmath>
using namespace std;
set<long long >zeap;
int main()
{
    ifstream f("zeap.in");
    ofstream g("zeap.out");
    string operatie;
    long long nr;
    while (f>>operatie)
    {
        if(operatie == "I") {
            f >> nr;
            if (zeap.find(nr) != zeap.end())
                continue;
            else
                zeap.insert(nr);
        } else if(operatie == "C")
        {
            f>>nr;
            if(zeap.find(nr) != zeap.end())
                g<<1<<'\n';
            else
                g<<0<<'\n';
        } else if(operatie == "S")
        {
            f>>nr;
            if(zeap.find(nr) != zeap.end())
                zeap.erase(nr);
            else
                g<<-1<<'\n';
        } else if(operatie == "MAX") {
            if (zeap.size() < 2)
                g << -1 << '\n';
            else {
                long long first = *next(zeap.begin(), 0);
                long long last = *next(zeap.begin(), zeap.size() - 1);
                g<<abs(last-first)<<'\n';
            }
        } else if(operatie == "MIN") {
            if(zeap.size()>=2) {
                long long minim = 10e9 + 3;
                for (auto it = zeap.begin(); it != zeap.end() && minim>1; ++it) {
                    auto it2 = ++it;
                    it--;
                    if (minim > abs(*it - *it2))
                        minim = abs(*it - *it2);
                }
                g << minim << '\n';
            } else g<<-1<<'\n';
        }

    }
    f.close();g.close();
    return 0;
}