Cod sursa(job #2897734)

Utilizator mirceaspPetcu Mircea mirceasp Data 4 mai 2022 18:21:07
Problema Zeap Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.68 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;
                long long k = 0;
                for (auto it = zeap.begin(); it != zeap.end() && k<zeap.size()-1; ++it) {
                    auto it2 = ++it;
                    it--;
                    if (minim > abs(*it - *it2))
                        minim = abs(*it - *it2);
                    k++;
                }
                g << minim << '\n';
            } else g<<-1<<'\n';
        }

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