Cod sursa(job #1989002)

Utilizator mihailarminia1234Arminia Mihail mihailarminia1234 Data 5 iunie 2017 15:31:12
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>

#define MOD 666013

using namespace std;

vector <int> HASH[MOD];
vector <int>::iterator it;
int N, op, el;

inline vector <int>::iterator Search(int x)
{
        int h = x % MOD;
        for(it = HASH[h].begin(); it != HASH[h].end(); ++it)
                if(*it == x) return it;
        return HASH[h].end();
}

inline void Add(int x)
{
        int h = x % MOD;
        if(Search(x) == HASH[h].end()) HASH[h].push_back(x);
}

inline void Delete(int x)
{
        int h = x % MOD;
        it = Search(x);
        if(it != HASH[h].end()) HASH[h].erase(it);
}

inline void Solve(int tip, int x)
{
        if(tip == 1) Add(x);
        else if(tip == 2) Delete(x);
        else
        {
                if(Search(x) != HASH[x % MOD].end()) printf("1\n");
                else printf("0\n");
        }
}

int main()
{
        freopen("hashuri.in", "r", stdin);
        freopen("hashuri.out", "w", stdout);
        scanf("%d", &N);
        for(int i = 1; i <= N; ++i)
        {
                scanf("%d %d", &op, &el);
                Solve(op, el);
        }
        return 0;
}