Pagini recente » Cod sursa (job #617295) | Cod sursa (job #1370642) | Cod sursa (job #2888339) | Cod sursa (job #2586058) | Cod sursa (job #316238)
Cod sursa(job #316238)
#include<stdio.h>
#define NMAX 1024
#define MOD 666013
struct nod
{
int sum;
nod *next;
};
typedef nod * pNode;
pNode LIST[MOD];
int N, A[NMAX], L;
int find(int v)
{
pNode c=LIST[v%MOD];
if(!c)
return 0;
pNode p=c;
while(p)
{
if(p->sum==v)
return 1;
p=p->next;
}
return 0;
}
int find_old(int v)
{
int h=v%MOD;
for(nod *p=LIST[h]; p; p=p->next)
if(p->sum == v) return 1;
return 0;
}
void insert(int x)
{
pNode p;
int h=x%MOD;
if(!find(x))
{
p=new nod;
p->sum=x;
p->next=LIST[h];
LIST[h]=p;
}
}
void find_next(int x, int y, int z)
{
int i,j,k,sum;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
for(k=1;k<=N;k++)
{
sum=A[i]+A[j]+A[k];
if(A[x]+A[y]+A[z]+sum==L)
printf("%d %d %d %d %d %d\n",A[x],A[y],A[z],A[i],A[j],A[k]);
}
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d",&N,&L);
int i,j,k,suma;
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++)
{
insert(A[i]+A[j]+A[k]);
}
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
for(k=1;k<=N;k++)
{
suma=L-A[i]-A[j]-A[k];
if(suma>=0)
if(find(L-A[i]-A[j]-A[k]))
{
//printf("found\n");
find_next(i,j,k);
return 0;
}
}
printf("-1\n");
return 0;
}