Pagini recente » Cod sursa (job #2545505) | Cod sursa (job #445793) | Cod sursa (job #2582659) | Cod sursa (job #3234812) | Cod sursa (job #3263851)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
const int GMAX = 75000;
const int NRGMAX = 200;
int d[GMAX + 2], fr[NRGMAX + 2];
int n, grTot, i, j, k, gma, ma;
int rasp[GMAX + 2];
int main() {
fin >> n >> grTot;
for(i = 1; i <= n; i++) {
int gr;
fin >> gr;
gma = max(gma, gr);
fr[gr]++;
}
d[0] = 1;
for(i = gma; i >= 1; i--) {
if(fr[i] > 0) {
for(j = grTot - i; j >= 0; j--) {
if(d[j] > 0) {
for(k = 1; k <= fr[i] && j + k * i <= grTot && d[j + k * i] == 0; k++) {
d[j + k * i] = d[j + (k - 1) * i] + 1;
ma = max(ma, j + k * i);
rasp[j + k * i] = i;
}
}
}
}
}
fout << ma << " " << d[ma] - 1 << "\n";
for(i = ma; i > 0; i -= rasp[i]) fout<< rasp[i] << "\n";
return 0;
}