Cod sursa(job #613377)

Utilizator paullikPaul Barbu -Gh paullik Data 22 septembrie 2011 21:24:20
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <vector>
#include <stdio.h>

#define M 666013

using namespace std;

vector<int> H[M];

vector<int>::iterator find(int x){
    vector<int>::iterator i;

    int list = x % M;

    for(i = H[list].begin(); i != H[list].end(); ++i){
        if(x == *i){
            return i;
        }
    }

    return H[list].end();
}

void add(int x){
    int list = x % M;

    if(find(x) == H[list].end()){
        H[list].push_back(x);
    }
}

void del(int x){
    int list = x % M;

    vector<int>::iterator it = find(x);

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

int main(){
    int op, x, n;

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

    scanf("%d", &n);

    while(n--){

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

        switch(op){
            case 1:
                add(x);
                break;
            case 2:
                del(x);
                break;
            case 3:
                printf("%d", find(x) != H[x % M].end());
                break;
        }

    }

    return 0;
}