Cod sursa(job #976568)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 23 iulie 2013 14:30:54
Problema Zeap Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
#include <algorithm>
#include <utility>
#include <string.h>
#include <set>

using namespace std;

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

const int MAXN = 100005;
const int oo = (1<<30)-1;

set<int> Zeap;
char s;

int main() {
    while(cin >> s) {
        if(s == 'I') {
            int x;
            cin >> x;
            Zeap.insert(x);
            continue;
        }
        if(s == 'S') {
            int x;
            cin >> x;
            set<int>::iterator it = Zeap.find(x);
            if(it == Zeap.end())
                cout << "-1\n";
            else
                Zeap.erase(it);
            continue;
        }
        if(s == 'C') {
            int x;
            cin >> x;
            if(Zeap.find(x) != Zeap.end())
                cout << "1\n";
            else cout << "0\n";
            continue;
        }
        if(s == 'M') {
            cin >> s;
            if(Zeap.size() < 2)
                cout << "-1\n";
            if(s == 'A') {
                set<int>::iterator it = Zeap.end();
                -- it;
                cout << *it - *Zeap.begin() << "\n";
            }
            else {
                int mindiff = oo;
                set<int>::iterator it = Zeap.begin(), jt = it;
                for(++jt ; jt != Zeap.end(); ++ jt, ++it)
                    mindiff = min (mindiff, *jt - *it);
                cout << mindiff << "\n";
            }
        }
    }
    cin.close();
    cout.close();
    return 0;
}