Cod sursa(job #495889)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 27 octombrie 2010 01:26:39
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 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); 
			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=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;         
		}          
     
	nr=(long long)sqrt(nr);
	nr=(long long)sqrt(nr);
	
printf("%lld",nr);  

return 0; 
}