Cod sursa(job #497373)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 2 noiembrie 2010 12:27:08
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include<stdio.h> 

struct point{int inf; point *leg;};

int i,op,nr,gasit,n; 
point *a[666100];

inline void inserare(int x)
{ 
	int nr=x%666013;
	point *q=a[nr],*t;
	
	while (q&&q->inf!=x) q=q->leg; 
	if (!q)
	{ 
		t=new point; 
		t->inf=x; 
		t->leg=a[nr]; 
		a[nr]=t;
	}
} 
 
inline void sterge(int x)
{ 
	int nr2=x%666013;
	point *qq,*q=a[nr2];
	
	if (q==NULL) return; 
	else if (q->inf==x) 
	{ 
		a[nr2]=a[nr2]->leg; 
		delete(q);
	}		
	else
	{ 
		while (q&&q->inf!=x) q=q->leg; 
		if (q!=NULL)
		{
			qq=q;
			q=q->leg;
			delete(qq);
		} 
	} 
} 
 
int cautare(int x)
{
	int nr3=x%666013;
	point *q=a[nr3]; 
	
	while (q!=NULL)
	{ 
		if (q->inf==x)
		{
			return 1; 
			break;
		}			
		q=q->leg; 
	} 
	
	return 0; 
}
 
int main()
{ 
	freopen("hashuri.in","r",stdin); 
	freopen("hashuri.out","w",stdout); 
	
	scanf("%d",&n); 
	
	for (i=0; i<=666013; i++) a[i]=NULL; 
	for (i=1; i<=n; i++)
	{ 
		scanf("%d%d",&op,&nr);
		switch(op)
		{
			case 1: 
				inserare(nr);
				break;
			case 2: 
				sterge(nr);
				break;
			case 3:
				gasit=cautare(nr);
				printf("%d\n",gasit);
				break;
		}
	}
	
	return 0; 
}