Pagini recente » Cod sursa (job #2580048) | Cod sursa (job #2858448) | Cod sursa (job #331288) | Cod sursa (job #198650) | Cod sursa (job #1279741)
#include <cstdio>
#include <cstdlib>
const int k = 6;
int n, s;
int v[101], sol[k];
int cmp (const void *p1, const void *p2)
{
int a = *(int*)p1, b = *(int*)p2;
return a - b;
}
int pb(int ii, int p, int ssol)
{
if (ssol > s)
return ssol - s;
if (p == k)
return ssol - s;
for (int i = ii; i < n; i++) {
if (ssol + v[i] * (k-p) > s)
return 1;
sol[p] = v[i];
if (pb(i, p + 1, ssol + v[i]) == 0)
return 0;
}
return -1;
}
int main()
{
FILE *in = fopen("loto.in", "r");
FILE *out = fopen("loto.out", "w");
fscanf(in, "%d %d", &n, &s);
for (int i = 0; i < n; i++)
fscanf(in, "%d", &v[i]);
qsort(v, n, sizeof(int), cmp);
if (pb(0, 0, 0) == 0) {
for (int i = 0; i < k; i++) {
fprintf(out, "%d ", sol[i]);
}
} else {
fprintf(out, "-1");
}
return 0;
}