Cod sursa(job #495628)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 26 octombrie 2010 10:42:18
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<stdio.h> 
#include<stdlib.h> 
 
 
struct point 
{ 
    
int inf,s1,s2,s3; 
    
point *leg; 
}; 
 
 
point *p,*s[1000]; 
int 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]=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=i;j<=n;j++) 
            
for (k=j;k<=n;k++) 
                
hash(a[i]+a[j]+a[k],((a[i]+a[j]+a[k])%(n*n*n/2))); 
             
 
             
 
    
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; 
}