Cod sursa(job #496549)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 29 octombrie 2010 18:02:27
Problema Loto Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<stdio.h>  
#include<stdlib.h>    
 
 
struct point  
{  
 
int inf,s1,s2,s3;  
 
point *leg;  
};  
 

 
point *qq,*p,*s[1199985];  
int qqq,y,i,j,k;  
long long suma,sum,a[105],n; 
 
 
void verif(long long q)  
{  
 
	qq=new point; 
	qq=s[q%999983];  
 
	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(long long x,long long 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++)
		 s[i]=NULL;
 
	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%(999983)));             
		}              
 
 
 
	qqq=0;  
 
	for (i=1;i<=999983;i++)           
 
    
	while (s[i]!=NULL&&qqq==0)  
	{         
		verif(sum-s[i]->inf);                     
		s[i]=s[i]->leg;          
	}           
      
 

	if (qqq==0) printf("-1");   
 
	return 0;  
}