Pagini recente » Cod sursa (job #2015910) | Cod sursa (job #1593076) | Cod sursa (job #2756664) | Cod sursa (job #2285114) | Cod sursa (job #2665656)
#include <fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
class BagItem {
public:
int val, cost;
};
BagItem bag[5005];
int n, g, dp[2][100005], line;
inline int next_line() {
return 1 - line;
}
int main() {
cin >> n >> g;
for(int i = 1; i <= n; ++i) {
cin >> bag[i].cost >> bag[i].val;
}
for(int i = 1; i <= n; ++i, line = next_line()) {
for(int curr_cost = 0; curr_cost <= g; ++curr_cost) {
dp[next_line()][curr_cost] = dp[line][curr_cost];
if(bag[i].cost <= curr_cost) {
dp[next_line()][curr_cost] = max(dp[next_line()][curr_cost], dp[line][curr_cost - bag[i].cost] + bag[i].val);
}
}
}
cout << max(dp[0][g], dp[1][g]) << '\n';
return 0;
}