Pagini recente » Cod sursa (job #1120017) | Cod sursa (job #1659654) | Cod sursa (job #2709725) | Cod sursa (job #1580475) | Cod sursa (job #3033130)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 20005
#define GMAX 75005
#define OBJMAX 205
int freq[OBJMAX], dp[GMAX], sol[GMAX];
int main() {
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n, g;
fin >> n >> g;
int mx = 0;
for (int i = 1, x; i <= n; ++i) {
fin >> x;
++freq[x];
mx = max(x, mx);
}
for (int i = mx; i >= 1; --i)
if (freq[i])
for (int j = g - i; j >= 0; --j)
if (dp[j] || !j)
for (int k = 1; k <= freq[i] && j + i * k <= g && !dp[j + i * k]; ++k) {
sol[j + i * k] = i;
dp[j + i * k] = dp[j] + k;
}
for (int i = g; i >= 1; --i)
if (dp[i]) {
mx = i;
break;
}
fout << mx << ' ' << dp[mx] << '\n';
for (int i = mx; i >= 1; i -= sol[i])
fout << sol[i] << '\n';
}