Pagini recente » Cod sursa (job #233548) | Cod sursa (job #2305464) | Cod sursa (job #1398515) | Cod sursa (job #1630355) | Cod sursa (job #1729772)
#include <bits/stdc++.h>
#define maxN 205
#define maxxx 75005
using namespace std;
int n,i,j,g,x,ob,sol;
int fr[maxN],dp[maxxx],a[maxxx];
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d %d",&n,&g);
for(i=1;i<=n;i++)
scanf("%d",&x),fr[x]++;
dp[0]=1,sol=g;
for(i=200;i>=1;i--)
if(fr[i])
for(j=g-i;j>=0;j--)
if(dp[j])
for(ob=1;ob<=fr[i] && j+ob*i<=g;ob++)
if(dp[j+ob*i]==0)
dp[j+ob*i]=dp[j]+ob,a[j+ob*i]=i;
else break;
while(!dp[sol])
sol--;
printf("%d %d\n",sol,dp[sol]-1);
while(dp[sol]!=1)
printf("%d\n",a[sol]),sol-=a[sol];
return 0;
}