Cod sursa(job #3128983)

Utilizator florinilie324Ilie Florin Alexandru florinilie324 Data 11 mai 2023 21:29:24
Problema Zeap Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <iostream>
#include <fstream>
#include <set>
#include <algorithm>

using namespace std;

int main() {
    ifstream fisierIntrare("zeap.in");
    ofstream fisierIesire("zeap.out");
    set<int> zeap;

    string operatie;
    int x;

    while (fisierIntrare >> operatie) {
        if (operatie == "I") {
            fisierIntrare >> x;
            zeap.insert(x);
        } else if (operatie == "S") {
            fisierIntrare >> x;
            auto it = zeap.find(x);
            if (it != zeap.end()) {
                zeap.erase(it);
            } else {
                fisierIesire << "-1\n";
            }
        } else if (operatie == "C") {
            fisierIntrare >> x;
            fisierIesire << (zeap.count(x) ? 1 : 0) << '\n';
        } else if (operatie == "MAX") {
            if (zeap.size() < 2) {
                fisierIesire << "-1\n";
            } else {
                fisierIesire << *zeap.rbegin() - *zeap.begin() << '\n';
            }
        } else if (operatie == "MIN") {
            if (zeap.size() < 2) {
                fisierIesire << "-1\n";
            } else {
                int min_dif = numeric_limits<int>::max();
                for (auto it = next(zeap.begin()); it != zeap.end(); ++it) {
                    min_dif = min(min_dif, *it - *prev(it));
                }
                fisierIesire << min_dif << '\n';
            }
        }
    }

    fisierIntrare.close();
    fisierIesire.close();

    return 0;
}