Cod sursa(job #1274983)
Utilizator | Data | 24 noiembrie 2014 17:14:50 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include <fstream>
using namespace std;
ifstream is ("rucsac.in");
ofstream os ("rucsac.out");
int N, G, v[10007], g[10007];
int sol;
int D[10007];
int main()
{
is >> N >> G;
for (int i = 1; i <= N; ++i)
is >> g[i] >> v[i];
for (int i = 1; i <= G; ++i)
D[i] = -1;
for (int i = 1; i <= N; ++i)
for (int j = G-g[i]; j >= 0; --j)
if (D[j] >= 0)
D[j+g[i]] = max(D[j] + v[i], D[j+g[i]]);
for (int i = 0; i <= G; ++i)
sol = max(sol, D[i]);
os << sol;
is.close();
os.close();
}