Pagini recente » Cod sursa (job #3306567) | Cod sursa (job #777250) | Cod sursa (job #210558) | Cod sursa (job #3348147) | Cod sursa (job #3313632)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int dp[2][10005];
// dp[(i % 2)[j] = care este costul maxim pe care il pot lua daca iau obiectul i sau nu
//dp[i % 2][j] = fie iau obiectul i, fie nu-l iau
// il iau: dp[i % 2][j] = dp[(i - 1) % 2][j - v[i].greutate] + v[i].cost
// nu il iau: dp[i % 2][j] = dp[(i - 1) % 2][j];
int main() {
int n, g;
fin >> n >> g;
for (int i = 1; i <= n; i++) {
int greutate, cost;
fin >> greutate >> cost;
for (int j = greutate; j <= g; j++) {
int curr_i = i % 2;
int last_i = (i - 1) % 2;
dp[curr_i][j] = max(dp[last_i][j - greutate] + cost, dp[last_i][j]);
}
}
fout << dp[n % 2][g];
return 0;
}