Pagini recente » Cod sursa (job #1611897) | Cod sursa (job #2201680) | Cod sursa (job #601814) | Cod sursa (job #3215764) | Cod sursa (job #93889)
Cod sursa(job #93889)
#include <cstdio>
#define maxn 127321
struct nod { int a, b, c;nod(){}; nod(int _a, int _b, int _c){a=_a, b=_b, c=_c;};};
nod H[maxn][23];
inline void insert(int a, int b, int c)
{
int v=a+b+c;
int h1=v%maxn;
int h2=v%23;
H[h1][h2]=nod(a, b, c);
}
int A, B, C;
inline int find(int v)
{
if(v<0) return 0;
int h1=v%maxn;
int h2=v%23;
int a=H[h1][h2].a, b=H[h1][h2].b, c=H[h1][h2].c;
if(a+b+c==v) { A=a; B=b; C=c; return 1;}
return 0;
}
int main()
{
int a[128];
int n, S, i, j, k;
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=1;j<=n;++j)
for(k=1;k<=n;++k) insert(a[i], a[j], a[k]);
int s;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
for(k=1;k<=n;++k)
{
s=S-a[i]-a[j]-a[k];
if(find(s))
{
printf("%d %d %d %d %d %d\n", a[i], a[j], a[k], A, B, C);
return 0;
}
}
printf("-1\n");
return 0;
}