Cod sursa(job #1148091)

Utilizator dan.ghitaDan Ghita dan.ghita Data 20 martie 2014 13:52:59
Problema Zeap Scor 30
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 1.39 kb
#include <iostream>
#include <fstream>
#include <set>
#include <string>
#define INF 66666666
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
set<int> zeap;
set<int>::iterator it, jt;

string s;
int mx, mn, x;
void parse(){
    x=0;
    for(int i=2; i<s.size(); ++i)
        x=x*10+(s[i]-'0');
}


int main()
{
    while(getline(f, s)){
//        g<<s<<'\n';
        if(s.front() == 'I')
            parse(), zeap.insert(x);
        if(s.front() == 'S'){
            parse();
            if(zeap.find(x)==zeap.end()){
                g<<-1<<'\n'; continue;
            }
            zeap.erase(x);
        }
        if(s.front() == 'C')
            parse(), g<<(zeap.find(x) != zeap.end())<<'\n';
        if(s == "MIN"){
            if(zeap.size() < 2){
                g<<-1<<'\n'; continue;
            }
            mn=INF;
            jt = zeap.begin(); it = jt; ++it;
            for(; it!=zeap.end(); ++it, ++jt)
                mn = min(mn, (*it)-(*jt));
            g<<mn<<'\n';
        }
        if(s == "MAX"){
            if(zeap.size() < 2){
                g<<-1<<'\n'; continue;
            }
            mx = 0;
            jt = zeap.end(); it = zeap.begin(); --jt;
//            for(; it!=zeap.end(); ++it, ++jt)
//                mx = max(mx, (*it)-(*jt));
            g<<(*jt)-(*it)<<'\n';
        }

    }



    return 0;
}