Pagini recente » Cod sursa (job #644676) | Profil emoji | Utilizatori inregistrati la Algoritmiada 2009, Runda 1, Studenti | Cod sursa (job #288532) | Cod sursa (job #2678043)
#include <bits/stdc++.h>
#define Gmax 75005
using namespace std;
int n, G, g[20005], dp[75005], i, j, maxx, fr[75005];
int main()
{
freopen("ghiozdan.in", "r", stdin);
freopen("ghiozdan.out", "w", stdout);
scanf("%d %d", &n, &G);
for(i = 1; i <= G; i ++)
dp[i] = Gmax;
for(i = 1; i <= n; i ++)
{
scanf("%d", &g[i]);
fr[g[i]] ++;
for(j = G; j >= g[i]; j --)
if(dp[j] > dp[j - g[i]] + 1)dp[j] = dp[j - g[i]] + 1, maxx = max(maxx, j);
}
printf("%d %d\n", maxx, dp[maxx]);
for(i = maxx - 1; i >= 0; i --)
if(dp[maxx] == dp[i] + 1 && fr[maxx - i] > 0)
{
printf("%d\n", maxx - i);
fr[maxx - i] --;
maxx = i;
}
return 0;
}