Pagini recente » Cod sursa (job #2293236) | Cod sursa (job #77819) | Cod sursa (job #1891882) | Cod sursa (job #889922) | Cod sursa (job #1495884)
#include <cstdio>
#include <algorithm>
using namespace std;
int N, G, result[5001][10001];
struct obj { int w; int p; } els[5001];
int main() {
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
scanf("%d %d\n", &N, &G);
for (int i = 0; i < N; ++i) {
scanf("%d %d\n", &els[i].w, &els[i].p);
}
for (int elIndex = 0; elIndex < N; ++elIndex) {
obj el = els[elIndex];
for (int currG = el.w; currG <= G; ++currG) {
int val = result[currG - el.w][elIndex] + el.p;
if (result[currG - el.w][elIndex] != 0 || currG == el.w) {
result[currG][elIndex+1] = max(result[currG][elIndex], val);
} else {
result[currG][elIndex+1] = result[currG][elIndex];
}
}
}
printf("%d\n", result[G][N]);
return 0;
}