Cod sursa(job #1936893)

Utilizator DysKodeTurturica Razvan DysKode Data 23 martie 2017 15:43:07
Problema Zeap Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.98 kb
#include <bits/stdc++.h>

using namespace std;

#define f first
#define s second

ifstream fin( "zeap.in" );
ofstream fout( "zeap.out" );

multiset< int > mip;
set< int > sit;
set< int >::iterator it,it1,it2;
string s;
int x;
const int oo = 1000000001;

int main()
{
    sit.insert( -oo );
    sit.insert( oo );
    mip.insert( oo + oo );
    while( fin>>s )
    {
        if( s[ 0 ] == 'I' )
        {
            fin>>x;
            if( sit.find( x ) != sit.end() ) continue;
            auto IT = sit.insert( x );
            it = IT.f;
            it1 = it2 = it;
            it1--;
            it2++;
            mip.erase( (*it2) - (*it1) );
            mip.insert( (*it2) - x );
            mip.insert( x - (*it1) );

        }
        else if( s[ 0 ] == 'S' )
        {
            fin>>x;
            it = sit.find( x );
            if( it != sit.end() )
            {
                it1 = it2 = it;
                it1--;
                it2++;
                mip.erase( (*it2) - x );
                mip.erase( x - (*it1) );
                mip.insert( (*it2) - (*it1) );
                sit.erase( x );
            }
            else
                fout<<-1<<'\n';
        }
        else if( s[ 0 ] == 'C' )
        {
            fin>>x;
            if( sit.find( x ) == sit.end() )
                fout<<0<<'\n';
            else
                fout<<1<<'\n';
        }
        else if( s[ 1 ] == 'I' )
        {
            if( sit.size() >= 2 )
                fout<<( *mip.begin() )<<'\n';
            else
                fout<<-1<<'\n';
        }
        else
        {
            if( sit.size() >= 2 )
            {
                it = sit.begin();
                it++;
                x = (*it);
                it = sit.find( oo );
                it--;
                x = (*it) - x;
                fout<<x<<'\n';
            }
            else
                fout<<-1<<'\n';
        }
    }


return 0;
}