Cod sursa(job #255370)

Utilizator luk17Luca Bogdan luk17 Data 9 februarie 2009 13:55:27
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<stdio.h>
#define P 100007
int n;

struct nod
{
int inf;
nod *leg;
};
nod *a[P+1];

void inserare(int x)
{
	nod *q,*p;
	p=a[x%P];
	for(q=p;q!=NULL;q=q->leg)
		if(q->inf==x)return;
	q=new nod();
	q->inf=x;
	q->leg=p;
	a[x%P]=q;
}
void stergere(int x)
{
	nod *q;
	int i=x%P;	
	if(a[i]==NULL)return;
	if(a[i]->inf==x)
	{
	q=a[i];
	a[i]=a[i]->leg;
	delete(q);
	return;
	}
	nod *p=a[i];
	for(q=a[i]->leg;q!=NULL&&q->inf!=x;q=q->leg)
		p=q;
	if(q!=NULL)
	{
		p->leg=q->leg;
		delete(q);
	}
}
int cautare(int x)
{	
	nod *q,*p;
	p=a[x%P];
	for(q=p;q!=NULL;q=q->leg)
		if(q->inf==x)return 1;
	return 0;

}
int main()
{
	int i,cod,parametru;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&n);
for(i=0;i<=P;i++)
a[i]=NULL;

for(i=1;i<=n;i++){
	{
		scanf("%d%d",&cod,&parametru);
		if(cod==1)inserare(parametru);
		 else if(cod==2)stergere(parametru);
			else printf("%d\n",cautare(parametru));
	}

}
return 0;
}