Cod sursa(job #2897491)

Utilizator irinaenescu2002Enescu Irina irinaenescu2002 Data 3 mai 2022 21:53:36
Problema Zeap Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.82 kb
#include <iostream>
#include <fstream>
#include <set>

using namespace std;

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

set<int> zeap;
string operatie;
int element;
int dif_min;

void inserare ()
{
    citeste >> element;
    zeap.insert(element);
}

void stergere ()
{
    citeste >> element;
    auto ok = zeap.find(element);
    if(ok == zeap.end())
        scrie << -1 << '\n';
    else zeap.erase(element);
}

void cauta ()
{
    citeste >> element;
    auto ok = zeap.find(element);
    if(ok == zeap.end())
        scrie << 0 << '\n';
    else scrie << 1 << '\n';
}

void maxim ()
{
    if (zeap.size() < 2)
        scrie << -1 << '\n';
    else
    {
        auto start = zeap.begin();
        auto sfarsit = zeap.end();
        sfarsit --;
        scrie << *sfarsit - *start << '\n';
    }
}

void minim ()
{
    if (zeap.size() < 2)
        scrie << -1 << '\n';
    else
    {
        auto elem = zeap.begin();
        auto elemm = zeap.begin();
        auto gata = zeap.end();
        elemm ++;
        dif_min = *elemm - *elem;
        while (elemm != gata)
        {
            if(*elemm - *elem < dif_min)
                dif_min = *elemm - *elem;
            // cout << *elemm << " " << *elem << endl;
            elemm ++;
            elem ++;
        }
    }
    scrie << dif_min << '\n';
    // cout << "D " << dif_min << endl << endl;
}

void citire ()
{
    while (citeste >> operatie)
    {
        if (operatie[0] == 'I')
            inserare ();
        else if (operatie[0] == 'S')
            stergere ();
        else if (operatie[1] =='A')
            maxim();
        else if (operatie[1] == 'I')
            minim();
        else if (operatie[0] == 'C')
            cauta();
    }
}
int main()
{
    citire ();
    return 0;
}