Pagini recente » Cod sursa (job #462037) | Cod sursa (job #1840044) | Cod sursa (job #1345083) | Cod sursa (job #1063289) | Cod sursa (job #18731)
Cod sursa(job #18731)
#include <stdio.h>
#include <string.h>
#define CMAX 202
#define GMAX 75555
#define NMAX 20200
#define INF 666000666
int N, G, V[NMAX];
int DP[GMAX], Ales[GMAX];
int main()
{
int i, j, s, d;
freopen("ghiozdan.in", "r", stdin);
scanf("%d %d", &N, &G);
for (i = 0; i < N; i++)
scanf("%d", &V[i]);
for (i = 1; i < NMAX; i++) DP[i] = INF;
for (i = 0; i < N; i++)
for (j = G; j >= V[i]; j--)
if (DP[j-V[i]]+1 < DP[j])
DP[j] = DP[j-V[i]]+1, Ales[j] = V[i];
freopen("ghiozdan.out", "w", stdout);
i = G;
while (DP[i] == INF) i--;
printf("%d %d\n", i, DP[i]);
while (Ales[i] != 0)
{
printf("%d\n", Ales[i]);
i = i-Ales[i];
}
return 0;
}