Pagini recente » Cod sursa (job #2012633) | Cod sursa (job #2295540) | Statistici Dorel Surubelnita (dorel02) | Cod sursa (job #1574009) | Cod sursa (job #479976)
Cod sursa(job #479976)
#include <stdio.h>
int n, smax;
int f[202], nr[75002], pred[75002];
inline int maxim (int a, int b) {return a > b ? a : b;}
int main ()
{
freopen ("ghiozdan.in", "r", stdin);
freopen ("ghiozdan.out", "w", stdout);
scanf ("%d %d", &n, &smax);
int i, j, k, val, max = 0;
for (i = 1; i <= n; i ++)
{
scanf ("%d", &val);
f[val] ++;
}
nr[0] = 1;
for (i = 200; i >= 1; i --)
if (f[i])
for (j = smax - i; j >= 0; j --)
if (nr[j])
for (k = 1; k <= f[i]; k ++)
if (j + i * k <= smax && nr[j + i * k] == 0)
{
nr[j + i * k] = nr[j + i * (k - 1)] + 1;
pred[j + i * k] = i;
max = maxim (max, j + i * k);
}
else
break;
printf ("%d %d\n", max, nr[max] - 1);
while (max)
{
printf ("%d\n", pred[max]);
max -= pred[max];
}
return 0;
}