Pagini recente » Cod sursa (job #3192316) | Cod sursa (job #2087490) | Sedinta 2009-03-16 | Cod sursa (job #1056448) | Cod sursa (job #3246049)
#include <fstream>
using namespace std;
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int frv[201];
int dp[75005];
int laste[75005];
int main()
{
int n,g,i,j,k,a;
cin>>n>>g;
for(i=1;i<=n;i++){
cin>>a;
frv[a]++;
}
dp[0]=1;
for(i=200;i>=1;i--){
if(frv[i]){
for(j=g-i;j>=0;j--){
if(dp[j]){
for(k=1;k<=frv[i] && j+k*i<=g && !dp[j+k*i];k++){
dp[j+k*i]=dp[j]+k;
laste[j+k*i]=i;
}
}
}
}
}
i=g;
while(dp[i]==0) i--;
cout<<i<<" "<<dp[i]-1<<"\n";
while(i){
cout<<laste[i]<<"\n";
i-=laste[i];
}
return 0;
}