Pagini recente » Cod sursa (job #3248379) | Cod sursa (job #1136656) | Cod sursa (job #2976327) | Rating Andrada Minca (Andrada_Minca) | Cod sursa (job #508016)
Cod sursa(job #508016)
#include <cstdio>
const int MAX_G = 201;
const int MAX_N = 75001;
int n, s, G;
int f[MAX_G];
int sol[MAX_N], tata[MAX_N];
int main()
{
int i, j, l;
freopen("ghiozdan.in", "r", stdin);
freopen("ghiozdan.out", "w", stdout);
scanf("%d %d", &n, &G);
int mx = 0;
for (i = 1; i <= n; ++i)
{
int x;
scanf("%d", &x);
++f[x];
if (x > mx)
mx = x;
}
sol[0] = 1;
for (i = mx; i; --i)
for (j = G - i; f[i] && (j + 1); --j)
for (l = 1; sol[j] && l <= f[i] && j + l * i <= G; ++l)
if (!sol[j + l * i])
{
sol[j + l * i] = sol[j + (l - 1) * i] + 1;
tata[j + l * i] = i;
if (j + l * i > s)
s = j + l * i;
}
--sol[s];
printf("%d %d\n", s, sol[s]);
for (i = s; i; i -= tata[i])
printf("%d\n", tata[i]);
}