Pagini recente » Cod sursa (job #3331531) | Cod sursa (job #2328498) | Cod sursa (job #1163509) | Cod sursa (job #2131760) | Cod sursa (job #3331148)
#include <bits/stdc++.h>
using namespace std;
#define USE_STD_IO 0
#if USE_STD_IO
#define fin cin
#define fout cout
#else
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
#endif // USE_STD_IO
int d[20002], ult[20002];
int grMa, n, i, j;
int frg[20002];
int main() {
if(USE_STD_IO) ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin >> n >> grMa;
for(i = 1; i <= n; i++) {
int g;
fin >> g;
frg[g]++;
}
d[0] = 1;
for(i = 200; i >= 1; i--) {
if(frg[i] == 0) continue;
for(j = grMa - i; j >= 0; j--) {
if(d[j] == 0) continue;
for(int k = 1; k <= frg[i] && j + k * i <= grMa && d[j + k * i] == 0; k++) {
d[j + k * i] = d[j + (k - 1) * i] + 1;
ult[j + k * i] = i;
}
}
}
i = grMa;
while(!d[i]) i--;
fout << i << " " << d[i] - 1 << "\n";
while(i) {
fout << ult[i] << "\n";
i -= ult[i];
}
return 0;
}