Pagini recente » Cod sursa (job #358329) | Cod sursa (job #340231) | Cod sursa (job #2414346) | Cod sursa (job #868221) | Cod sursa (job #1676872)
#include <iostream>
#include <cstdio>
#include <algorithm>
#define MAXN 110
using namespace std;
int a[MAXN], n, s, nq;
int part[MAXN*MAXN*MAXN];
void citire()
{
scanf("%d %d\n", &n, &s);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
}
void solvePart()
{
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
for (int k = 1; k <= n; k++)
part[++nq] = a[i]+a[j]+a[k];
}
int main()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
citire();
solvePart();
int bun = 0, i, j;
sort(part+1, part+1+nq);
for (i = 1, j = nq; i <= j; i++) {
while (j && part[j] > s-part[i])
j--;
if (part[j] == s - part[i]) {
bun = 1;
break;
}
}
if (!bun) {
printf("-1");
return 0;
}
for (int mi = 1; mi <= n; mi++)
for (int mj = 1; mj <= n; mj++)
for (int mk = 1; mk <= n; mk++)
if (a[mi] + a[mj] + a[mk] == part[i]) {
printf("%d %d %d ", a[mi], a[mj], a[mk]);
goto step;
}
step:
for (int mi = 1; mi <= n; mi++)
for (int mj = 1; mj <= n; mj++)
for (int mk = 1; mk <= n; mk++)
if (a[mi] + a[mj] + a[mk] == part[j]) {
printf("%d %d %d", a[mi], a[mj], a[mk]);
goto finish;
}
finish:
return 0;
}