Cod sursa(job #2752069)

Utilizator linte_robertLinte Robert linte_robert Data 16 mai 2021 15:56:15
Problema Zeap Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <iostream>
#include <set>
#include <fstream>
#include <vector>
using namespace std;

int findMax(set<int> my_set)
{
    int max_element;
    if (!my_set.empty())
        max_element = *(my_set.rbegin());
    return max_element;
}

int findMin(set<int> my_set)
{
    int min_element;
    if (!my_set.empty())
        min_element = *my_set.begin();
    return min_element;
}
int minim( vector < int > v ){
    int dif = 1000000000;
    for( int i = 0; i < v.size(); i++ ){
        for( int j = i; j < v.size(); j++ ){
            if( v[i] != -1 && v[j] != -1 ){
                if( v[i] > v[j] && v[i] - v[j] < dif ) dif = v[i] - v[j];
                else{
                    if( v[i] < v[j] && v[j] - v[i] < dif ) dif = v[j] - v[i];
                }
            }
        }
    }
    return dif;
}

int main(){
    set < int > cautare;
    vector < int > numere;
    ifstream fin("zeap.in");
    ofstream fout("zeap.out");
    string operatie;
    while( fin >> operatie ){
        if( operatie == "I" ){
            int x;
            fin >> x;
            numere.push_back(x);
            cautare.insert(x);
        }
        if( operatie == "S" ){
            int x;
            fin >> x;
            if( cautare.count(x) == 0 ) fout << -1 << endl;
            else{
                for(int i = 0; i < numere.size(); i++ ){
                    if( numere[i] == x ) numere[i] = -1;
                }
                cautare.erase(x);
            }
        }
        if( operatie == "C" ){
            int x;
            fin >> x;
            fout << cautare.count(x) << endl;
        }
        if( operatie == "MAX" ){
            if( cautare.size() < 2 ) fout << -1 << endl;
            else{
                fout << findMax(cautare) - findMin(cautare) << endl;
            }
        }
        if( operatie == "MIN" ){
            fout << minim(numere) << endl;
        }
    }
}