Cod sursa(job #3135384)

Utilizator Sumurduc_TeodoraSumurduc Teodora Sumurduc_Teodora Data 3 iunie 2023 00:05:02
Problema Zeap Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <iostream>
#include <fstream>
#include <unordered_set>
#include <cmath>
#include <string>
#include <set>

using namespace  std;
ifstream f("zeap.in");
ofstream g("zeap.out");
void INSEREAZA(unordered_set<int> &Z,int x){
    Z.insert(x);
}
void STERGE(unordered_set<int> &Z,int x){
    Z.erase(x);
}
int CAUTA(unordered_set<int> Z,int x){
    if(Z.count(x)==0)
        return 0;
    return 1;
}
int MAX_DIF(unordered_set<int> Z){
    if(Z.size()<2)
        return -1;
    else{
        auto a=Z.end();
        auto b=Z.begin();
        return abs(*a-*b);
    }
}
int MIN_DIF(unordered_set<int> Z){
    if(Z.size()<2)
        return -1;
    auto a=Z.end();
    int min_dif=*a+1;
    auto i1=Z.begin();
    auto i2=next(Z.begin());
    while(i2!=Z.end())
    {
        int dif=abs(*i1-*i2);
        min_dif=min(min_dif,dif);
        i1++;
        i2++;
    }
    return min_dif;
}
int main() {
    unordered_set<int> Z;
    string a;
    int x;
    while(f>>a)
    {
        if(a=="I")
        {
            f>>x;
            INSEREAZA(Z,x);
        }
        if(a=="S")
        {
            f>>x;
            if(Z.count(x)!=0)
                STERGE(Z,x);
            else g<<-1<<endl;
        }
        if(a=="C")
        {
            f>>x;
            g<<CAUTA(Z,x)<<endl;
        }
        if(a=="MIN")
        {
            g<<MIN_DIF(Z)<<endl;
        }
        if(a=="MAX")
        {
            g<<MAX_DIF(Z)<<endl;
        }
    }
    return 0;
}