Cod sursa(job #2357863)

Utilizator Senth30Denis-Florin Cringanu Senth30 Data 27 februarie 2019 19:33:35
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;
const int MOD = 666013;

int N, tip, x;
vector <int> Hash[MOD];

vector <int>::iterator find_value(int x){
    int idx = x % MOD;

    for(auto it = Hash[idx].begin(); it != Hash[idx].end(); ++it){
        if((*it) == x)
            return it;
    }
    return Hash[idx].end();
}

int insert_value(int x){
    int idx = x % MOD;

    if(find_value(x) == Hash[idx].end())
        Hash[idx].push_back(x);
}

int check_value(int x){
    return find_value(x) != Hash[x % MOD].end();
}

int delete_value(int x){
    int idx = x % MOD;

    for(auto it = Hash[idx].begin(); it != Hash[idx].end(); ++it){
        if((*it) == x){
            Hash[idx].erase(it);
            break;
        }
    }
}

int main(){

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

    scanf("%d", &N);
    for(int i = 0; i < N; i++){
        scanf("%d%d", &tip, &x);
        if(tip==1)
            insert_value(x);
        else if(tip==2)
            delete_value(x);
        else
            printf("%d\n", check_value(x));

    }

    return 0;
}