Cod sursa(job #1274968)
| Utilizator | Data | 24 noiembrie 2014 17:00:02 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 25 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include <fstream>
using namespace std;
ifstream is ("rucsac.in");
ofstream os ("rucsac.out");
int N, G, v[1000], g[1000];
int lc = 1, lp;
int D[2][1000];
int main()
{
is >> N >> G;
for (int i = 1; i <= N; ++i)
is >> g[i] >> v[i];
for (int i = 1; i <= N; ++i, lc = !lc, lp = !lp)
{
for (int j = 0; j <= G; ++j)
if (j >= g[i])
D[lc][j] = max(D[lp][j-g[i]] + v[i], D[lp][j]);
else
D[lc][j] = D[lp][j];
}
os << D[lp][G];
is.close();
os.close();
}
