Pagini recente » Cod sursa (job #497509) | Cod sursa (job #1941007) | Cod sursa (job #1864757) | Cod sursa (job #1159150) | Cod sursa (job #126816)
Cod sursa(job #126816)
#include <stdio.h>
#include <stdlib.h>
int n, g, v[201], c[75000], nr[75000];
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
int i, j, x, k, max = 0;
scanf ("%d %d", &n, &g);
for (i = 1; i <= n; i++)
{
scanf("%d", &x);
v[x]++;
if (x > max ) max = x;
}
c[0] = 1;
for (i = max; i >= 1; i--)
if (v[i])
for (j = g; j >= 0; j--)
{
if (c[j])
{
for (k = 1; j + (k * i) <= g && k <= v[i]; k++)
{ if (nr[k*i+j] == 0|| nr[k * i + j] > nr[j] + k + 1)
{
c[k * i + j] = (k - 1) * i + j + 1;
nr[k * i + j] = nr[j] + k;
}
}
}
}
i = g;
while (!c[i]) i--;
printf("%d %d\n",i,nr[i]);
while (i)
{
x++;
printf("%d\n",i - (c[i] - 1));
i = c[i] - 1;
}
return 0;
}