Pagini recente » Cod sursa (job #1983272) | Borderou de evaluare (job #2702010) | Cod sursa (job #2558618) | Cod sursa (job #645642) | Cod sursa (job #2771634)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int N, G;
vector<pair<int, int>>v;
vector<vector<int>>dp;
int main() {
fin >> N >> G;
v = vector<pair<int, int>>(N + 1);
dp = vector<vector<int>>(2, vector<int>(G + 1));
for(int i = 1; i <= N; i++) {
fin >> v[i].first >> v[i].second;
}
for(int i = 1; i <= N; i++) {
for(int j = 1; j <= G; j++) {
if(v[i].first <= j) {
dp[1][j] = max(dp[0][j], dp[0][j - v[i].first] + v[i].second);
} else {
dp[1][j] = dp[0][j];
}
}
dp[0] = dp[1];
}
fout << dp[1][G] << '\n';
return 0;
}