Cod sursa(job #1792944)
| Utilizator | Data | 30 octombrie 2016 18:29:42 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include <iostream>
#include <fstream>
#include <algorithm>
#define NMAX 5005
#define GMAX 10005
using namespace std;
int w[NMAX], p[NMAX];
int optimum[GMAX];
int main() {
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int n, g;
cin >> n >> g;
for (int i = 1; i <= n; ++i) {
cin >> w[i] >> p[i];
}
for (int i = 1; i <= n; i++) {
for (int j = g - w[i]; j >= 0; --j) {
optimum[j + w[i]] = max(optimum[j + w[i]], optimum[j] + p[i]);
}
}
cout << optimum[g] << '\n';
return 0;
}