Pagini recente » Cod sursa (job #3233331) | Cod sursa (job #1905512) | Cod sursa (job #617790) | Cod sursa (job #2591078) | Cod sursa (job #964185)
Cod sursa(job #964185)
#include <cstdio>
#define maxh 666013 // numar prim
struct node{ int v; node *next;};
node *H[maxh];
inline void insert(int v)
{
int h=v%maxh;
node *p;
for(p=H[h];p;p=p->next)
if(p->v == v) return ;
p=new node;
p->v=v;
p->next=H[h];
H[h]=p;
}
inline int find(int v)
{
int h=v%maxh;
for(node *p=H[h]; p; p=p->next)
if(p->v == v) return 1;
return 0;
}
int a[128], n, S;
int main()
{
int i, j, k;
int ii, jj, kk;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d\n", &n, &S);
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)
insert(a[i]+a[j]+a[k]);
for(i=1; i<=n; ++i)
for(j=i; j<=n; ++j)
for(k=j; k<=n; ++k)
if(S-a[i]-a[j]-a[k] >= 0)
if(find(S-a[i]-a[j]-a[k]))
{
printf("%d %d %d ", a[i], a[j], a[k]);
for(ii=1; ii<=n; ++ii)
for(jj=ii; jj<=n; ++jj)
for(kk=jj; kk<=n; ++kk)
if(a[ii]+a[jj]+a[kk]==S-a[i]-a[j]-a[k])
{
printf("%d %d %d\n", a[ii], a[jj], a[kk]);
return 0;
}
}
printf("-1\n");
return 0;
}