Pagini recente » Cod sursa (job #2969851) | Cod sursa (job #696214) | Cod sursa (job #1050201) | Cod sursa (job #1909873) | Cod sursa (job #1473995)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main (void) {
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int N, W, w, p;
scanf("%u %u", &N, &W);
int prev[W+1], curr[W+1];
//init
memset(prev+1, 0, W * sizeof(int));
int m = 0;
//go
for (int i = 0; i < N; ++i) {
scanf("%u %u", &w, &p);
for (int j = 1; j <= W; ++j) {
int test = ((j - w) > 0) ? (prev[j-w] + p) : 0;
curr[j] = max(test, prev[j]);
if (curr[j] > m) m = curr[j];
}
memcpy(prev+1, curr+1, W * sizeof(int));
}
printf("%d\n", m);
return 0;
}