Pagini recente » Cod sursa (job #126593) | Cod sursa (job #2344751) | Cod sursa (job #1987064) | Monitorul de evaluare | Cod sursa (job #495870)
Cod sursa(job #495870)
#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;
}