Cod sursa(job #495890)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 27 octombrie 2010 01:33:01
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<stdio.h> 
#include<math.h>
#include<stdlib.h> 
 
 
struct point 
{ 
    
int inf,s1,s2; 
    
point *leg; 
}; 
 
 
point *qq,*p,*s[600]; 
int qqq,y,i,j,k,n,a[101]; 
long long suma,sum,nr;
 
 
void verif(int q) 
{ 

qq=new point;
qq=s[q%500]; 
    
while (qq!=NULL)    
{ 
	if (qq->inf==q); 
			if (qq->s1!=s[i]->s1)
				if (qq->s1!=s[i]->s2)
					if (qq->s2!=s[i]->s1)
						if (qq->s2!=s[i]->s2)
							if (qq->s1!=qq->s2)
								if (s[i]->s1!=s[i]->s2)
							
									//{
									//	printf("%d %d %d %d\n",qq->s1,qq->s2,s[i]->s1,s[i]->s2);
										nr++; 
								//}
	qq=qq->leg;     
} 
} 
 
 
void hash(int x,int y) 
{

p=new point; 
p->inf=x;     
p->leg=NULL; 
p->s1=i;
p->s2=j;


if (s[y]!=NULL)
		p->leg=s[y]; 

s[y]=p; 
} 
 
 
int main() 
{ 
	freopen("oite.in","r",stdin); 
	freopen("oite.out","w",stdout); 
	
	scanf("%d%lld",&n,&sum); 
	for (i=1;i<=n;i++) 
		scanf("%d",&a[i]); 
     
 
    
for (i=1;i<=n-1;i++) 
for (j=i+1;j<=n;j++) 
	{                
		suma=a[i]+a[j];                
		hash(suma,(suma%(500)));            
}             
 
 
    
qqq=0; 
     
for (i=1;i<=499;i++) 
        
	while (s[i]!=NULL) 
        
		{        
			verif(sum-s[i]->inf);        
			s[i]=s[i]->leg;         
		}          

	
printf("%lld",(int)(sqrt(nr)));  

return 0; 
}