Cod sursa(job #2078762)
Utilizator | Data | 29 noiembrie 2017 22:07:17 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int main() {
int n, g;
cin >> n >> g;
vector < int > dp(g + 1);
for (int i = 1; i <= n; i ++) {
int w, p;
cin >> w >> p;
for (int cur_w = g; cur_w >= 0; cur_w --) {
if (cur_w + w > g) {
continue;
}
dp[cur_w + w] = max(dp[cur_w + w], dp[cur_w] + p);
}
}
int ans = 0;
for (int i = 0; i <= g; i ++) {
ans = max(ans, dp[i]);
}
cout << ans << '\n';
}