Pagini recente » Cod sursa (job #226196) | Cod sursa (job #1644806) | Cod sursa (job #1264184) | Cod sursa (job #1855819) | Cod sursa (job #611032)
Cod sursa(job #611032)
# include <fstream>
using namespace std;
int N, G, cit, v[201], a[75010], ob[75010];
int main ()
{
ifstream f ("ghiozdan.in");
ofstream g ("ghiozdan.out");
f >> N >> G;
for (int i = 1; i <= N; ++i)
f >> cit, ++v[cit];
a[0] = 1;
for (int i = 200; i >= 1; --i)
{
for (int j = G; j >= 0; --j)
{
if (ob[j] > 0 || a[j] > 0)
for (int k = 1; j + k * i <= G && k <= v[i]; ++k)
if (!ob[j + k * i] || ob[j + k * i] > ob[j] + k + 1)
{
ob[j + k * i] = ob[j] + k;
a[j + k * i] = (k - 1) * i + j;
}
}
}
for (; !ob[G]; --G);
g << G << ' ' << ob[G] << '\n';
for (; G > 0; )
{
g << G - a[G] << '\n';
G = a[G];
}
g.close ();
return 0;
}