Pagini recente » Cod sursa (job #1357937) | Cod sursa (job #1366103) | Cod sursa (job #209624) | Cod sursa (job #1077716) | Cod sursa (job #832439)
Cod sursa(job #832439)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("ghiozdan.in");
ofstream out ("ghiozdan.out");
int Best[75010];
int Ap[210];
int Prec[75010];
int main ()
{
int N, G, i, j, k;
in >> N >> G;
for (i = 1; i <= N; i ++)
in >> j, ++ Ap[j];
Best[0] = 1;
for (i = 200; i; i --)
if (Ap[i])
for (j = G - i; j >= 0; j --)
if (Best[j])
for (k = 1; k <= Ap[i]; k ++)
if (Best[j + i * k] < Best[j] + k){
Best[j + i * k] = Best[j] + k;
Prec[j + i * k] = i;
}
for (i = G; !Best[i]; i --);
out << i << " " << Best[i] - 1 << "\n";
while (i){
out << Prec[i] << "\n";
i -= Prec[i];
}
return 0;
}