Pagini recente » Cod sursa (job #2325218) | Cod sursa (job #754546) | Cod sursa (job #804214) | Cod sursa (job #1566257) | Cod sursa (job #1772771)
# include <bits/stdc++.h>
# define MOD 666013
using namespace std;
const int Nmax = 105;
int n, s, i, j, k, i2, j2, k2, a[Nmax];
vector <int> H[MOD + 5];
bool Find(int x) {
if (x <= 0) return false;
int xx = x;
x %= MOD;
vector <int>:: iterator it;
for (it = H[x].begin(); it != H[x].end(); ++it)
if (*it == xx) return true;
return false;
}
void add(int x) {
if (Find(x)) return;
else H[x % MOD].push_back(x);
}
int main ()
{
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) {
add(a[i] + a[j] + a[k]);
if ( Find(s - a[i] - a[j] - a[k]) ) {
printf("%d %d %d ", a[i], a[j], a[k]);
for (i2 = 1; i2 <= n; ++i2)
for (j2 = 1; j2 <= n; ++j2)
for (k2 = 1; k2 <= n; ++k2)
if (a[i2] + a[j2] + a[k2] == s - a[i] - a[j] - a[k]) {
printf("%d %d %d\n", a[i2], a[j2], a[k2]);
return 0;
}
}
}
printf("-1\n");
return 0;
}