Pagini recente » Cod sursa (job #2969003) | Cod sursa (job #1207268) | Cod sursa (job #2434041) | Cod sursa (job #2987839) | Cod sursa (job #2528444)
#include <fstream>
using namespace std;
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int f[205];
int dp[75005];
int last[75005];
int main()
{
int n,x,g;
cin>>n>>g;
for(int i=1;i<=n;++i)
{
cin>>x;
f[x]++;
}
dp[0]=1;
for(int i=200;i>=1;--i)
for(int j=g;j>=0;--j)
{
if(!dp[j]) continue;
for(int d=1;d*i+j<=g and d<=f[i];++d)
{
if(dp[d*i+j])
break;
dp[d*i+j]=dp[j]+d;
last[d*i+j]=i;
}
}
int best=g;
while(dp[best]==0)
--best;
cout<<best<<" "<<dp[best]-1<<endl;
int nr=dp[best]-1;
for(int i=1;i<=nr;++i)
{
cout<<last[best]<<endl;
best-=last[best];
}
return 0;
}