Cod sursa(job #1519908)

Utilizator xtreme77Patrick Sava xtreme77 Data 8 noiembrie 2015 00:22:06
Problema Zeap Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.83 kb
/**
 * Code by Patrick Sava
 * "Spiru Haret" National College of Bucharest
 **/

# include "fstream"
# include "cstring"
# include "vector"
# include "queue"
# include "bitset"
# include "algorithm"
# include "map"
# include "set"
# include "unordered_map"
# include "deque"
# include "string"
# include "iomanip"
# include "cmath"
# include "stack"
# include "cassert"

const char IN [ ] =  "zeap.in" ;
const char OUT [ ] = "zeap.out" ;

# define pb push_back
# define mp make_pair
# define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a )
# define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a )

using namespace std ;

const int MAX = 2e5 + 14 ;

ifstream cin ( IN ) ;
ofstream cout ( OUT ) ;

vector < int > v ;

int main()
{
    int n = 0 ;
    string s ;
    while ( cin >> s )
    {
        if ( s == "I" )
        {
            int x , found = 0 ;
            cin >> x ;
            for ( auto y : v )
                if ( y == x ) {
                    found = 1 ;
                }
            if ( !found ){
                v.push_back( x ) ;
                ++ n ;
            }
        }
        else if ( s == "S" )
        {
            int x , found = 0 ;
            cin >> x ;
            int cate = -1 ;
            for ( auto y : v ){
                ++ cate ;
                if ( y == x ) {
                    found = cate ;
                }
            }
            if ( ! found ) cout << -1 << '\n' ;
            else {
                v.erase ( v.begin ( ) + found ) ;
                -- n ;
            }
        }
        else if ( s == "C" )
        {
            int x , found = 0 ;
            cin >> x ;
            for ( auto y : v )
                if ( y == x ) {
                    found = 1 ;
                }
            cout << found << '\n' ;
        }
        else if ( s == "MIN" )
        {
            int mindif = 1 << 30 ;
            int i = 0 ;
            for ( auto x : v ){
                int j = 0 ;
                ++ i ;
                for ( auto y : v ){
                    ++ j ;
                    if ( i != j )
                        mindif = min ( abs ( x - y ) , mindif ) ;
                }
            }
            if ( n >= 2 )
                cout << mindif << '\n' ;
            else cout << -1 << '\n' ;
        }
        else
        {
            sort ( v.begin ( ) , v.end ( ) ) ;

            vector < int > :: iterator a = v.begin() ;
            vector < int > :: iterator b = v.end() ;
            -- b ;
            if ( n >= 2 )
                cout << *b - *a << '\n' ;
            else cout << -1 << '\n' ;
        }
        /*cout << "DEBUG1\n" ;
        for ( auto x : v )
            cout << x << ' ' ;
        cout << '\n' ;
        cout << "DEBUG2\n" ;*/
    }
    return 0;
}