Pagini recente » Cod sursa (job #1393110) | Cod sursa (job #1287243) | Cod sursa (job #3163504) | Cod sursa (job #585169) | Cod sursa (job #1651975)
#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;
}