Pagini recente » Cod sursa (job #2967613) | Cod sursa (job #2517101) | Cod sursa (job #2750915) | Cod sursa (job #1400508) | Cod sursa (job #1781781)
#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;
}