Pagini recente » Cod sursa (job #1944736) | Cod sursa (job #594442) | Cod sursa (job #966240) | Cod sursa (job #463825) | Cod sursa (job #841608)
Cod sursa(job #841608)
#include <cstdio>
#include <iostream>
using namespace std;
# define MOD 999983
struct nod
{
int x,y,z;
nod *adr;
} *combo[MOD];
void add(int a,int b,int c)
{
int sum=a+b+c;
int m=sum%MOD;
if(!combo[m])
{
combo[m]=new nod;
combo[m]->x=a;
combo[m]->y=b;
combo[m]->z=c;
combo[m]->adr=NULL;
return;
}
nod *p = combo[m];
while(p->adr && (p->x + p->y + p->z !=sum))p=p->adr;
if(p->adr) return;
p->adr = new nod;
p->adr->x=a;
p->adr->y=b;
p->adr->z=c;
p->adr->adr=NULL;
}
int main()
{
int n,i,j,k,*v,s;
v= new int [n];
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf(" %d %d",&n,&s);
for(i=0;i<n;i++)
scanf("%d",&v[i]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
if(v[i]+v[j]+v[k] <s )
add(v[i],v[j],v[k]);
for(i=0;i<MOD;i++)
{
nod *p=combo[i];
while(p)
{
int sum1 = p->x + p->y + p->z;
nod *q=combo[(s-sum1)%MOD];
while(q)
{
int sum2 = q->x+q->y+q->z;
if(sum1+sum2==s)
{
printf("%d %d %d %d %d %d",p->x,p->y,p->z,q->x,q->y,q->z);
return 0;
}
q=q->adr;
}
p=p->adr;
}
}
printf("-1");
}