Cod sursa(job #1459126)

Utilizator mirupetPetcan Miruna mirupet Data 9 iulie 2015 10:57:05
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include<cstdio>
#include<vector>

#define MOD 666013
using namespace std;

int n;
vector<int> v[MOD];

inline vector<int>::iterator gaseste(int x)
{
    int list = x % MOD;
    vector<int>::iterator it;

    for ( it = v[list].begin(); it != v[list].end(); ++it)
        if ( *it == x)
            return it;
    return v[list].end();
}

inline void insereaza(int x)
{
    int list = x % MOD;
    if ( gaseste(x) == v[list].end() )
        v[list].push_back(x);
}

inline void sterge(int x)
{
    int list = x % MOD;
    vector<int>::iterator it = gaseste(x);

    if ( it != v[list].end() )
        v[list].erase(it);
}

int main()
    {
        freopen("hash.in","r",stdin);
        freopen("hash.out","w",stdout);

        int op, x;
        for (scanf("%d", &n); n; --n)
        {
            scanf("%d %d", &op, &x);
            if ( op == 1)
            {
                insereaza(x);
                continue;
            }

            if( op == 2)
            {
                sterge(x);
                continue;
            }

            printf("%d\n", gaseste(x) != v[x % MOD].end());
        }

    }