Cod sursa(job #734799)

Utilizator TabaraTabara Mihai Tabara Data 14 aprilie 2012 21:53:32
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

#define SIZE 666013
typedef vector < vector < int > > Hash;
Hash hash(SIZE, vector < int >());

inline bool in_hash(int what)
{
    int hs = what % SIZE;
    int sz = hash[hs].size();
    for (int i = 0; i < sz; i++) {
	if (hash[hs][i] == what) {
	    return true;
	}
    }
    return false;
}

inline void insert(int what)
{
    int hs = what % SIZE;
    if (!in_hash(what)) {
	hash[hs].push_back(what);
    }
}

inline void del(int what)
{
    int hs = what % SIZE;
    int sz = hash[hs].size();
    for (int i = 0; i < sz; i++) {
	if (hash[hs][i] == what) {
	    hash[hs].erase(hash[hs].begin() + i);
	    return;
	}
    }
}



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

    int N, Type, X;

    scanf("%d", &N);

    for (int i = 0; i < N; i++) {
	scanf("%d %d", &Type, &X);

	switch (Type) {
	case 1:
	    insert(X);
	    break;
	case 2:
	    del(X);
	    break;
	case 3:
	    cout << in_hash(X) << endl;
	    break;
	}
    }

    return 0;
}