Cod sursa(job #2750701)

Utilizator bananamandaoneTudor Cosmin Oanea bananamandaone Data 12 mai 2021 21:09:35
Problema Zeap Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <bits/stdc++.h>

using namespace std;

ofstream fout("zeap.out");

set<int> s;

int Numar(char lin[])
{
    int i, nr = 0;
    for(i = 2; lin[i] != '\n'; i++)
        nr = nr * 10 + (lin[i] - '0');
    return nr;
}

void Insereaza(int x)
{
    s.insert(x);
}

int Cauta(int x)
{
    return s.count(x);
}

int Sterge(int x)
{
    if(!Cauta(x))
        return 0;

    s.erase(s.find(x));
    return 1;
}

int MaxDif()
{
    return *s.rbegin() - *s.begin();
}

int MinDif() // :')
{
    set<int>::iterator it = s.begin();
    int val = *it;
    it++;
    int dif = 1e9;

    while(it != s.end())
    {
        dif = min(dif, *it - val);
        it++;
    }

    return dif;
}

int main()
{
    int x;
    FILE * pFile;
    char lin[14];

    pFile = fopen ("zeap.in", "r");
    while(fgets(lin, 14, pFile) != NULL)
    {
        if(lin[0] == 'I')
        {
            x = Numar(lin);
            Insereaza(x);
        }
        else if(lin[0] == 'S')
        {
            x = Numar(lin);
            if(!Sterge(x))
                fout << -1 << "\n";
        }
        else if(lin[0] == 'C')
        {
            x = Numar(lin);
            fout << Cauta(x) << "\n";
        }
        else if(lin[1] == 'A') // max
        {
            fout << MaxDif() << "\n";
        }
        else // min
        {
            fout << MinDif() << "\n";
        }

    }
    fclose (pFile);


    return 0;
}