Cod sursa(job #1151097)

Utilizator SilverGSilver Gains SilverG Data 23 martie 2014 20:50:18
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
/*
	Keep It Simple!
*/

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include<stdio.h>
#include<list>

using namespace std;

#define MOD 696969

int N, type, value;

list<int> Hash[MOD];

bool Find(int x)
{
	for (list<int>::iterator it = Hash[x%MOD].begin(); it != Hash[x%MOD].end(); it++)
		if (*it == x)
			return 1;
	return 0;
}

void AddToHash(int x)
{
	if (!Find(x))
		Hash[x%MOD].push_back(x);
}

void EraseFromHash(int x)
{
	for (list<int>::iterator it = Hash[x%MOD].begin(); it != Hash[x%MOD].end(); it++)
		if (*it == x)
		{
			Hash[x%MOD].erase(it);
			break;
		}
}

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

	int N;

	scanf("%d", &N);
	for (int i = 1; i <= N; i++)
	{
		scanf("%d%d", &type, &value);
		if (type == 1)
			AddToHash(value);
		else if (type == 2)
			EraseFromHash(value);
		else if (type == 3)
			printf("%d\n", Find(value));
	}

	return 0;
}