Cod sursa(job #2899103)

Utilizator popescumateicalinPopescu Matei Calin popescumateicalin Data 7 mai 2022 20:34:47
Problema Zeap Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <iostream>
#include <fstream>
#include <set>
#include <string>
using namespace std;

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

set<int> zeap;
string input;
int num;

void insert()
{
    in >> num;
    if (zeap.find(num) == zeap.end())
        zeap.insert(num);
}

void sterge()
{
    in >> num;
    auto it = zeap.find(num);
    if (it == zeap.end())
        out << "-1\n";
    else
        zeap.erase(num);
}

void cauta()
{
    in >> num;
    if (zeap.find(num) == zeap.end())
        out << "0\n";
    else
        out << "1\n";
}

void maxdif()
{
    if (zeap.size() < 2)
        out << "-1\n";
    else
        out << *(--zeap.end()) - *(zeap.begin()) << '\n';
}

void mindif()
{
    if (zeap.size() < 2)
        out << "-1\n";
    else
    {
        int dif = INT32_MAX;
        for (auto it = zeap.begin(); it != --zeap.end(); it++)
        {
            if (*next(it) - *it < dif)
                dif = *next(it) - *it;
        }
        out << dif << '\n';
    }
}

int main()
{
    while (in >> input)
    {
        if (input == "I")
            insert();
        if (input == "S")
            sterge();
        if (input == "C")
            cauta();
        if (input == "MAX")
            maxdif();
        if (input == "MIN")
            mindif();
    }
    /*for (auto it = zeap.begin(); it != zeap.end(); it++)
        out << *it << " ";*/
    return 0;
}