Mai intai trebuie sa te autentifici.

Cod sursa(job #251769)

Utilizator ZillaMathe Bogdan Zilla Data 3 februarie 2009 13:02:44
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include <stdio.h>

#define nr 666013

struct hash{
	int info;
	hash *next;
};

hash *p[nr];

int n,op,x;

int adauga(int a)
{
	hash *current=p[a];
	while(current!=NULL)
		{
			if(current->info==x)
				return 0;
			current=current->next;
		}
	hash *newh=new hash;
	newh->info = x;
	if(p[a]==NULL)
		{
			p[a]=newh;
			newh->next=NULL;
		}
	else
		{
			newh->next=p[a];
			p[a]=newh;
		}
	return 0;
}
int sterge(int a)
{
	hash *current=p[a],*current2=p[a];
	if(p[a]==NULL)
		return 0;
	if(current->info==x)
		{
			p[a]=NULL;
			delete current;
			return 0;
		}

	current=current->next;
	while(current!=NULL)
		{
			if(current->info==x)
				{
					current2->next=current->next;
					delete current;
					return 0;
				}
			current2=current;
			current=current->next;
		}
	return 0;
}

int query(int a)
{
	hash *current=p[a];
	while(current!=NULL)
		{
			if(current->info==x)
				return 1;
			current=current->next;
		}
	return 0;
}
int main()
{
	int i;
	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)
				adauga(x%nr);
			if(op==2)
				sterge(x%nr);
			if(op==3)
				printf("%d\n",query(x%nr));
		}
	return 0;
}