Pagini recente » Cod sursa (job #2563444) | Cod sursa (job #1433998) | Cod sursa (job #103911) | Cod sursa (job #2890159) | Cod sursa (job #1651968)
#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 << dp[1][g] << '\n';
return 0;
}