Pagini recente » Cod sursa (job #2446601) | Cod sursa (job #2202707) | Cod sursa (job #463734) | Cod sursa (job #2667916) | Cod sursa (job #2262199)
#include <algorithm>
#include <stdio.h>
const int MAX_G = 10000;
int dp[2][1 + MAX_G];
struct Object {
int p;
int g;
};
int main() {
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n, g;
scanf("%d%d", &n, &g);
Object objects[1 + n];
for (int i = 1; i <= n; i++)
scanf("%d%d", &objects[i].g, &objects[i].p);
for (int i = 1; i <= n; i++)
for (int j = 0; j <= g; j++) {
dp[i % 2][j] = dp[(i - 1) % 2][j];
if (objects[i].g <= j)
dp[i % 2][j] = std::max(dp[i % 2][j], dp[(i - 1) % 2][j - objects[i].g] + objects[i].p);
}
printf("%d\n", dp[n % 2][g]);
fclose(stdin);
fclose(stdout);
return 0;
}