Pagini recente » Cod sursa (job #2590876) | Cod sursa (job #2052984) | Cod sursa (job #1872264) | Cod sursa (job #1927548) | Cod sursa (job #1704839)
#include <cstdio>
#include <algorithm>
using namespace std;
int n,g, i,j, dp[75005], cnt[205], a;
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]=n+1;
for(i=1; i<=n; ++i)
{
scanf("%d", &a);
++cnt[a];
for(j=g-a; j>=0; --j)
dp[j+a] = min(dp[j+a], dp[j]+1);
}
for(i=g; i; --i)
if(dp[i]!=n+1) break;
printf("%d %d\n", i, dp[i]);
for(j=i-1; j>=0; --j)
if(dp[i]==dp[j]+1 && cnt[i-j])
{
--cnt[i-j];
printf("%d\n", i-j );
i=j;
}
return 0;
}