Cod sursa(job #495870)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 27 octombrie 2010 00:26:53
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<stdio.h> 
#include<stdlib.h> 
 
 
struct point 
{ 
    
int inf,s1,s2,s3; 
    
point *leg; 
}; 
 
 
point *p,*s[50000]; 
int suma,qqq,y,sum,i,j,k,n,a[100]; 
 
 
void verif(int q) 
{ 
point *qq; 
qq=s[q%(n*n*n/2)]; 
    
while (qq!=NULL) 
   
{ 
        
if (qq->inf==q&&qqq==0) { 
            
		printf("%d %d %d %d %d %d\n",s[i]->s1,s[i]->s2,s[i]->s3,qq->s1,qq->s2,qq->s3); 
		qqq=1; 
        
	}
        
	qq=qq->leg;     
} 
} 
 
 
void hash(int x,int y) 
{

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


if (s[y]!=NULL)
		p->leg=s[y]; 
s[y]=new point;
s[y]=p; 
} 
 
 
int main() 
{ 
	freopen("loto.in","r",stdin); 
	freopen("loto.out","w",stdout); 
	
	scanf("%d%d",&n,&sum); 
	for (i=1;i<=n;i++) 
		scanf("%d",&a[i]); 
     
 
    
for (i=1;i<=n;i++) 
for (j=1;j<=n;j++) 
for (k=1;k<=n;k++) 
	{                
		suma=a[i]+a[j]+a[k];                
		hash(suma,(suma%(n*n*n/3)));            
}             
 
 
    
qqq=0; 
     
for (i=1;i<=n*n*n/2;i++) 
        
	while (s[i]!=NULL) 
        
		{        
			verif(sum-s[i]->inf);        
			if (qqq==1) break;        
			s[i]=s[i]->leg;         
		}          
     
if (qqq==0) printf("-1\n");  

return 0; 
}