Pagini recente » Istoria paginii planificare/sedinta-20071218 | Cod sursa (job #3288170) | Profil veleandu | Cod sursa (job #2270638) | Cod sursa (job #508020)
Cod sursa(job #508020)
#include <cstdio>
const int MAX_G = 211;
const int MAX_N = 75011;
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;
s = 0;
for (i = mx; i; --i)
if (f[i])
for (j = G - i; j >= 0; --j)
if (sol[j])
for (l = 1; l <= f[i] && j + l * i <= G && !sol[j + l * i]; ++l)
{
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]);
}