Cod sursa(job #951286)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 19 mai 2013 23:17:38
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

#define MOD 24631

vector <int> HashTable[MOD];

int N;

inline vector<int>::iterator cauta( int value ){

    vector<int>::iterator it;

    for ( it = HashTable[value % MOD].begin(); it != HashTable[value % MOD].end(); ++it )
        if ( *it == value )
            return it;

    return HashTable[value % MOD].end();
}

inline void insereaza( int value ){

    if ( cauta( value ) == HashTable[value % MOD].end() )
        HashTable[value % MOD].push_back( value );
}

inline void sterge( int value ){

    vector<int>::iterator it = cauta( value );

    if ( it != HashTable[value % MOD].end() )
        HashTable[value % MOD].erase(it);
}

int main(){

    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);

    for ( scanf("%d", &N) ; N; --N ){

        int op, x;

        scanf("%d %d", &op, &x);

        if ( op == 1 )
            insereaza(x);

        if (op == 2)
            sterge(x);

        if ( op == 3 )
            printf("%d\n", cauta(x) != HashTable[x % MOD].end());
    }

    return 0;
}