Pagini recente » Cod sursa (job #2103415) | Cod sursa (job #1141121) | Cod sursa (job #1561895) | Cod sursa (job #2745939) | Cod sursa (job #1196716)
#include <cstdio>
#define nmax 75005
using namespace std;
int ap[205],dp[nmax],nxt[nmax];
int main()
{
int N,G,x,i,j,k;
freopen ("ghiozdan.in","r",stdin);
freopen ("ghiozdan.out","w",stdout);
scanf("%d%d", &N,&G);
for(i=1;i<=N;++i)
{
scanf("%d", &x);
++ap[x];
}
dp[0]=1;
for(i=200;i;--i)
{
if(ap[i])
{
for(j=G-i;j>=0;--j)
{
if(dp[j])
for(k=1;k<=ap[i] && j+k*i<=G && !dp[j+k*i];++k)
{
dp[j+k*i]=dp[j]+k;
nxt[j+k*i]=i;
}
}
}
}
for(i=G;!dp[i];--i);
printf("%d %d\n", i,dp[i]-1);
for(;nxt[i];i-=nxt[i])
printf("%d\n", nxt[i]);
return 0;
}