Cod sursa(job #3135564)

Utilizator sumithesumSumurduc Alexandru sumithesum Data 3 iunie 2023 17:47:05
Problema Zeap Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.88 kb

#include <bits/stdc++.h>

using namespace std;

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

void sterge(vector<int> &s ,int x ){
    auto it = std::find(s.begin(), s.end(), x);
    if (it != s.end())
        s.erase(it);
    else
        out << -1 << endl;
}
bool cauta(vector<int> &s , int x){
    for(auto aux : s)
        if(aux == x)
            return 1;
    return 0;
}
void insereaza(vector<int> &s ,int x ){
    if(cauta(s,x) == 0)
        s.push_back(x);
}
int max_diff(vector<int >&s) {
    if (s.size() < 2)
        return -1;
    int maxDiff= 0;

    for (size_t i = 0; i < s.size(); i++)
        for (size_t j = i + 1; j < s.size(); j++) {
            int diff = std::abs(s[i] - s[j]);
            if (diff > maxDiff)
                maxDiff = diff;
            }
    return maxDiff ;
}

int MIN_DIFF(const std::vector<int>& s) {
    if (s.size() < 2) {
        return -1;
    }

    int minDiff = INT_MAX;

    std::vector<int> sortedS = s;
    std::sort(sortedS.begin(), sortedS.end());

    for (size_t i = 1; i < sortedS.size(); i++) {
        int diff = std::abs(sortedS[i] - sortedS[i - 1]);
        if (diff < minDiff) {
            minDiff = diff;
        }
    }

    return minDiff;
}

void afisare(vector<int> &s)
{
    for(auto aux : s)
        cout << aux << ' ';
    cout << endl;
}

int main(){

 vector<int> s;
 string t;

 while(!in.eof())
 {
     in >> t;
     if(t == "I")
     {
         char aux; in >> aux;
         insereaza(s,int(aux - '0'));
     }else if ( t == "S"){

         char aux; in >> aux;
         sterge(s,int(aux - '0'));
     }else if (t == "C"){
         char aux; in >> aux;
         out << cauta(s,int(aux - '0')) << endl;
     }else if (t == "MAX")
        out <<  max_diff(s)<< endl;
     else if ( t == "MIN")
         out << MIN_DIFF(s) << endl;
 }

    return 0;
}