Pagini recente » Cod sursa (job #2754454) | Cod sursa (job #790173) | Cod sursa (job #1378283) | Cod sursa (job #697454) | Cod sursa (job #518720)
Cod sursa(job #518720)
#include <cstring>
#include <fstream>
#include <algorithm>
using namespace std;
int N, G;
int V[20010], Minob[75002];
int T[75002];
int Gmax, Nmin;
int main()
{
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
fin >> N >> G;
for (int i = 1; i <= N; ++i)
fin >> V[i];
sort(V + 1, V + N + 1);
memset(Minob, -1, sizeof(Minob));
Minob[0] = 0;
for (int i = N; i >= 1; --i)
for (int j = G - V[i]; j >= 0; --j)
if (Minob[j] != -1 && Minob[j + V[i]] == -1)
{
Minob[j + V[i]] = Minob[j] + 1;
T[j + V[i]] = j;
if (j + V[i] >= Gmax)
Gmax = j + V[i], Nmin = Minob[j + V[i]];
}
fout << Gmax << ' ' << Nmin << '\n';
int now = Gmax;
while (now)
{
fout << now - T[now] << '\n';
now = T[now];
}
fin.close();
fout.close();
}