Pagini recente » Cod sursa (job #694242) | Cod sursa (job #1545386) | Cod sursa (job #1621237) | Rating Guta George (gguta) | Cod sursa (job #2588918)
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int fr[205], dp[75005], last[75005];
int main()
{
int n, g;
fin >> n >> g;
for(int i = 1; i <= n; ++i)
{
int x;
fin >> x;
fr[x] ++;
}
dp[0] = 1;
for(int i = 200; i >= 1; --i)
if(fr[i])
for(int s = g; s >= 0; --s)
if(dp[s])
{
int times = min(fr[i], (g - s) / i);
for(int k = 1; k <= times; ++k){
if(dp[k * i + s])
break;
dp[k * i + s] = dp[s] + k;
last[k * i + s] = i;
}
}
while(!dp[g])
--g;
fout << g << ' ' << dp[g] - 1 << '\n';
while(g){
fout << last[g] << '\n';
g -= last[g];
}
return 0;
}