Pagini recente » Cod sursa (job #135005) | Cod sursa (job #727316) | Cod sursa (job #517890) | Cod sursa (job #1972686) | Cod sursa (job #1424555)
#include <stdio.h>
#define max(a, b) ((a) > (b) ? (a) : (b))
#define MAX_WEIGHT 10000
int d[2][MAX_WEIGHT + 1];
int main(void) {
FILE *f;
int n, maxWeight;
int w, p;
f = fopen("rucsac.in", "r");
fscanf(f, "%d%d", &n, &maxWeight);
for (int i = 0; i < n; i++) {
fscanf(f, "%d%d", &w, &p);
for (int j = 1; j <= maxWeight; j++) {
if (j >= w) {
d[i & 1][j] = max(d[!(i & 1)][j], d[!(i & 1)][j - w] + p);
} else {
d[i & 1][j] = d[!(i & 1)][j];
}
}
}
fclose(f);
f = fopen("rucsac.out", "w");
fprintf(f, "%d\n", d[!(n & 1)][maxWeight]);
fclose(f);
return 0;
}