Pagini recente » Cod sursa (job #952338) | Cod sursa (job #1975939) | Cod sursa (job #430984) | Cod sursa (job #2934816) | Cod sursa (job #3284366)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, W;
fin >> n >> W;
vector<vector<int>> dp(2, vector<int>(W + 1));
vector<pair<int, int>> objects(n);
for (int i = 0; i < n; ++i) {
fin >> objects[i].first >> objects[i].second;
}
for (int i = 1; i <= n; ++i) {
for (int w = 1; w <= W; ++w) {
if (w - objects[i - 1].first >= 0) {
dp[1][w] = max(dp[0][w], dp[0][w - objects[i-1].first] + objects[i-1].second);
} else {
dp[1][w] = dp[0][w];
}
}
swap(dp[0], dp[1]);
}
fout << dp[0][W];
return 0;
}