Cod sursa(job #495884)

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

qq=new point;
qq=s[q%103]; 
    
while (qq!=NULL)    
{ 
if (qq->inf==q&&qqq==0) { 
            
		printf("%d %d %d %d %d %d",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=a[i];
p->s2=a[j];
p->s3=a[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%lld",&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++) 
	{                
		suma=a[i]+a[j]+a[k];                
		hash(suma,(suma%(103)));            
}             
 
 
    
qqq=0; 
     
for (i=1;i<=103;i++) 
        
	while (s[i]!=NULL&&qqq==0) 
        
		{        
			verif(sum-s[i]->inf);        
			s[i]=s[i]->leg;         
		}          
     
if (qqq==0) printf("-1");  

return 0; 
}