Cod sursa(job #1400343)

Utilizator ThomasFMI Suditu Thomas Thomas Data 25 martie 2015 11:22:03
Problema Zeap Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.42 kb
#include <fstream>
#include <set>
using namespace std;

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

set<int> S;
set<int>::iterator it,it1,it2,fin;

set< pair<int,int> > S2;
set< pair<int,int> >::iterator it3;

int main()
{
    char c[5];
    int x;

    while(f>>c)
    {
        if(c[0] == 'I')
        {
            f>>x;
            S.insert(x);
            it2 = it1 = it = S.find(x);

            fin = S.end();
            --fin;

            if(it != S.begin() && it != fin)
            {
                --it1;
                ++it2;
                it3 = S2.find(make_pair((*it2)-(*it1),*it1));
                S2.erase(it3);
                S2.insert(make_pair((*it)-(*it1),*it1));
                S2.insert(make_pair((*it2)-(*it),*it));
            }
            else if(it == fin && S.size() > 1)
            {
                --it;
                S2.insert(make_pair((*fin)-(*it),*it));
            }
            else if(it == S.begin() && S.size() > 1)
            {
                ++it;
                S2.insert(make_pair((*it)-(*S.begin()),*S.begin()));
            }
        }
        else if(c[0] == 'S')
        {
            /*f>>x;
            it = S.find(x);
            if(it == S.end()) g<<"-1\n";
            else
            {
                it2 = it1 = it;
                ++it2;

                int k = 0;

                if(it != S.begin())
                {
                    ++k;
                    --it1;

                    it3 = S2.find(make_pair((*it)-(*it1),*it1));
                    S2.erase(it3);
                }
                if(it2 != S.end())
                {
                    ++k;
                    it3 = S2.find(make_pair((*it2)-(*it),*it));
                    S2.erase(it3);
                }

                if(k == 2)
                {
                    S2.insert(make_pair((*it2)-(*it1),*it1));
                }

                S.erase(it);
            }*/
        }
        else if(c[0] == 'C')
        {
            f>>x;
            it = S.find(x);
            if(it == S.end()) g<<"0\n";
            else g<<"1\n";
        }
        else if(c[1] == 'A')
        {
            it = S.end(); --it;
            g<<(*it) - (*S.begin())<<"\n";
        }
        else if(c[1] == 'I')
        {
            g<<(*S2.begin()).first<<"\n";
        }
    }

    f.close();
    g.close();
    return 0;
}