Cod sursa(job #608603)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 17 august 2011 14:34:37
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<cstdio>
#include<vector>
#define MOD 666013
using namespace std;
int n;
vector <int> H[MOD];
vector <int>::iterator it;

inline bool Found(int x)
{
	int poz=x%MOD;
	for(it=H[poz].begin();it!=H[poz].end();it++)
		if(*it==x)
			return 1;
	return 0;
}

inline void Adaugare(int x)
{
	if(!Found(x))
	{
		int poz=x%MOD;
		for(it=H[poz].begin();it!=H[poz].end();it++)
			if(*it==-1)
			{
				*it=x;
				return;
			}
		H[poz].push_back(x);
	}
}

inline void Stergere(int x)
{
	if(Found(x))
	{
		int poz=x%MOD;
		for(it=H[poz].begin();it!=H[poz].end();it++)
			if(*it==x)
			{
				*it=-1;
				return;
			}
	}
}

int main()
{
	int i,op,x;
	freopen("hashuri.in","r",stdin);
	freopen("hashuri.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d %d",&op,&x);
		if(op==1)
			Adaugare(x);
		else
			if(op==2)
				Stergere(x);
			else
				printf("%d\n",Found(x));
	}
	return 0;
}