Cod sursa(job #496533)

Utilizator chiar_nimeninimeni chiar_nimeni Data 29 octombrie 2010 16:57:31
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
# include <stdio.h>

# define p 666013

struct point 
{
	int inf;
	point *leg;
};
 
point *a[666100];
int i,r,x,n;

inline void insert (int x)
{
	int nr;
	point *q,*t;
	nr=x%p;
	q=a[nr];
	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 stergere(int x){
	int nr2;
	point *qq,*q;
	nr2=x%p;
	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->leg;
		q=q->leg;
		delete(qq);
	}
	}
}

inline void afisare (int x)
{
	int nr;
	point *q;
	nr=x%p;
	q=a[nr];
	bool ok=false;
	while (q)
	{
		if (q->inf==x)
		{
			ok=true;
			break;
		}
		q=(q->leg);
	}
	if (ok==true) printf ("1\n");
	else printf ("0\n");
}

int main ()
{
freopen ("hashuri.in","r",stdin);
freopen ("hashuri.out","w",stdout);
scanf ("%d",&n);
for (i=1; i<=p; i++) a[i]=NULL;
for (i=1; i<=n; i++)
{
	scanf ("%d",&r);
	scanf ("%d",&x);
	if (r==1)
	{
		insert (x);
	}
	else if (r==2)
	{
		stergere(x);
	}
	else if (r==3)
	{
		afisare(x);
	}
}
return 0;
}