Cod sursa(job #495918)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 27 octombrie 2010 11:20:11
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

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

point *u,*q,*a[100000],*p,*pp,*qq;
int n,i,nr,x,op;

int caut(int q,int qqq)
{
	qq=a[q%qqq];
	while (qq!=NULL) 
	{
		if (qq->inf==q) return 1;
		qq=qq->leg;
	}
	return 0;
}
	
	
	
void ins(int q,int qqq)
{
	p=new point;
	p->inf=q;
	p->leg=NULL;
		
	if (a[q%qqq]!=NULL)
		p->leg=a[q%qqq];
	
	a[q%qqq]=p;
}

	void sterge(int q,int qqq)
	{
		qq=a[q%qqq];
		if (qq==NULL) return;
		while (qq&&qq->inf!=q) qq=qq->leg;
		if (qq) qq->inf=0;
		
	}
		
		
	
	int main()
{
	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) 
			if ((caut(x,n%111))==0)
				ins(x,n%111);
			
		if (op==2) 
				if (caut(x,n%111)==1) sterge(x,n%111);
		if (op==3)
			if (caut(x,n%111)==1) printf("1\n");
					else printf("0\n");
	}	
	
	return 0;
}