Cod sursa(job #496014)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 27 octombrie 2010 16:20:50
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 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; 
	
	if (qq->inf==q) 
	{
		a[q%qqq]=a[q%qqq]->leg;
		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%11))==0) 
			ins(x,n%11); 
 
	if (op==2)  
		if (caut(x,n%11)==1) sterge(x,n%11); 
	if (op==3) 
		if (caut(x,n%11)==1) printf("1\n"); 
                    else printf("0\n");  

}    
 
return 0; 
}