Pagini recente » Cod sursa (job #2626312) | Cod sursa (job #2659222) | Cod sursa (job #2942934) | Cod sursa (job #649363) | Cod sursa (job #1161211)
#include <cstdio>
#define Gmax 75005
using namespace std;
int ap[205],dp[Gmax],nxt[Gmax];
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;
}