Pagini recente » Cod sursa (job #2958965) | Cod sursa (job #3198608) | Cod sursa (job #2807902) | Cod sursa (job #2977907) | Cod sursa (job #1495897)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int N, G, result[2][10001];
struct obj { int w; int p; } el;
int main() {
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
scanf("%d %d\n", &N, &G);
for (int elIndex = 0; elIndex < N; ++elIndex) {
scanf("%d %d\n", &el.w, &el.p);
for (int currG = 1; currG <= G; ++currG) {
if (currG > el.w || currG == el.w) {
int val = result[0][currG - el.w] + el.p;
result[1][currG] = max(result[0][currG], val);
} else {
result[1][currG] = result[0][currG];
}
}
memcpy(result[0], result[1], sizeof(result[1]));
// for (int j = 1; j <= G; ++j) {
// printf("%d ", result[1][j]);
// }
// printf("\n");
}
printf("%d\n", result[0][G]);
return 0;
}