Cod sursa(job #1705444)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 20 mai 2016 16:53:40
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
# include <iostream>
# include <vector>

# include <cstdio>

using namespace std;

const int HASH_SIZE = 1048575;

class myHash {
    vector<int> v[HASH_SIZE];

    public:
        bool check( int val ) {
            int i, h;

            h = val & HASH_SIZE;

            i = 0;
            while ( i < v[h].size() && v[h][i] != val )
                i ++;

            return ( i < v[h].size() );
        }

        bool pop( int val ) {
            int i, h;

            h = val & HASH_SIZE;

            i = 0;
            while ( i < v[h].size() && v[h][i] != val  )
                i ++;

            if ( i < v[h].size() )
                v[h].erase( v[h].begin() + i );

            return ( i < v[h].size() );
        }

        void push( int val ) {
            int h = val & HASH_SIZE;

            v[h].push_back( val );
        }
};

class myHash m;

int main() {
    FILE *fin = fopen( "hashuri.in", "r" ), *fout = fopen( "hashuri.out", "w" );

    int n, i, t, nr;

    fscanf( fin, "%d", &n );

    for ( i = 0; i < n; i ++ ) {
        fscanf( fin, "%d%d", &t, &nr );

        if ( t == 1 )
            m.push( nr );
        else if ( t == 2 )
            m.pop( nr );
        else
            fprintf( fout, "%d\n", m.check( nr ) );
    }

    fclose( fin );
    fclose( fout );

    return 0;
}