Cod sursa(job #734812)

Utilizator TabaraTabara Mihai Tabara Data 14 aprilie 2012 22:05:49
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

#define SIZE 666013

vector<int> hash[SIZE];

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:
	    printf("%d\n", in_hash(X) == true ? 1 : 0);
			//cout << in_hash(X) << endl;
	    break;
	}
    }

    return 0;
}