Pagini recente » Cod sursa (job #1077088) | Cod sursa (job #93187) | Cod sursa (job #1404251) | Cod sursa (job #2653672) | Cod sursa (job #18408)
Cod sursa(job #18408)
#include <fstream>
#include <vector>
#define INF 9999999
using namespace std;
vector<int> nmin;
vector<int> g;
vector<vector<int> >s;
int n, G;
int main()
{
int i, j, k;
ifstream fin("ghiozdan.in");
fin >> n >> G;
nmin.resize(G+2);
g.resize(n+2);
s.resize(G+2);
s[0].resize(n+2);
for (i = 1; i <= G; i++)
{
s[i].resize(n+2);
nmin[i] = INF;
}
for (i = 1; i <= n; i++)
fin >> g[i];
fin.close();
for (j = 1; j <= G; j++)
for (i = 1; i <= n; i++)
if (g[i] <= j && nmin[j-g[i]] != INF && !s[j-g[i]][i])
if (nmin[j] > nmin[j-g[i]] + 1)
{
nmin[j] = nmin[j-g[i]] + 1;
for (k = 1; k <= n; k++)
s[j][k] = s[j-g[i]][k];
s[j][i] = 1;
}
ofstream fout("ghiozdan.out");
int max;
for (i = G; i >= 0; i--)
if (nmin[i] != INF)
{
max = i;
break;
}
fout << max << " " << nmin[max] << "\n";
for (i = 1; i <= n; i++)
if (s[max][i]) fout << g[i] << "\n";
fout.close();
return 0;
}