Cod sursa(job #2751662)

Utilizator TDV24Tont Dragos-Valentin TDV24 Data 15 mai 2021 15:21:34
Problema Zeap Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.74 kb
#include <iostream>
#include <fstream>
#include <set>
#include <string>
using namespace std;

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

void insereaza(set<int> &zeap, int nr)
{
    if(!zeap.count(nr))
        zeap.insert(nr);
}

int sterge(set<int> &zeap, int nr)
{
    if(zeap.count(nr))
    {
        zeap.erase(nr);
        return 1;
    }
    else
        return -1;
}

int cauta(set<int> &zeap, int nr)
{
    if(zeap.count(nr))
        return 1;
    else
        return 0;
}

int dif(set<int> &zeap, string cod)
{
    if(zeap.size()<2)
        return -1;
    if(cod=="MAX")
    {
        set<int>::iterator nr1=zeap.begin(), nr2=zeap.end();
        nr2--;
        return *nr2-*nr1;
    }
    else
    {
        set<int>::iterator nr1=zeap.begin(), nr2=zeap.begin();
        nr2++;
        int dif_finala=100000001;
        for(;nr2!=zeap.end();nr1++, nr2++)
            {
                int dif_actual=*nr2-*nr1;
                if(dif_actual<dif_finala)
                    dif_finala=dif_actual;
            }
        return dif_finala;
    }
}

int main()
{
    set<int> zeap;
    int v, nr;
    string cod;
    while(f>>cod)
    {
        if(cod=="I")
            {
                f>>nr;
                insereaza(zeap, nr);
            }
        else if(cod=="S")
            {
                f>>nr;
                v=sterge(zeap, nr);
                if(v==-1)
                    g<<v<<"\n";
            }
        else if(cod=="C")
            {
                f>>nr;
                v=cauta(zeap, nr);
                g<<v<<"\n";
            }
        else
            {
                v=dif(zeap, cod);
                g<<v<<"\n";
            }
    }
    return 0;
}