Pagini recente » Cod sursa (job #2278761) | Cod sursa (job #2428475) | Cod sursa (job #2449456) | Cod sursa (job #117171) | Cod sursa (job #1819152)
#include <fstream>
using namespace std;
ifstream fin ("ghiozdan.in");
ofstream fout ("ghiozdan.out");
const int N = 210, G = 75010;
int n, g, i, j, x, v[N], a[G], d[G], k;
int main() {
fin >> n >> g;
for (i = 1; i <= n; ++i) {
fin >> x;
v[x]++;
}
d[0] = 1;
for (i = N - 1; i > 0; --i) {
if (v[i]) {
for (j = g - i; j >= 0; --j){
if (d[j]) {
for (k = 1; k <= v[i] && j + i * k <= g && !d[j + i * k]; k++) {
d[j + i * k] = d[j] + k;
a[j + i * k] = i;
}
}
}
}
}
for (i = g; i >= 0; --i){
if (d[i]) {
fout << i << " " << d[i] - 1 << "\n";
while (a[i]) {
fout << a[i] << "\n";
i -= a[i];
}
}
}
return 0;
}