Pagini recente » Cod sursa (job #469693) | Cod sursa (job #2486760) | Cod sursa (job #1943050) | Cod sursa (job #2296132) | Cod sursa (job #3154674)
#include <stdio.h>
#define MAX_G 10001
int d[MAX_G];
static inline int max(int a, int b) { return a > b ? a : b; }
int main() {
FILE *fin, *fout;
int n, g;
int w, p;
int m, i;
int lim;
int maxVal;
fin = fopen("rucsac.in", "r");
fscanf(fin, "%d%d", &n, &g);
lim = 0;
for (m = 0; m < n; m++) {
fscanf(fin, "%d%d", &w, &p);
lim = max(lim + w, g);
for (i = lim; i > w; i--) {
if (d[i - w] != 0 && d[i] < d[i - w] + p)
d[i] = d[i - w] + p;
}
if (d[w] < p)
d[w] = p;
}
fclose(fin);
maxVal = d[1];
for (i = 2; i <= g; i++)
maxVal = max(maxVal, d[i]);
fout = fopen("rucsac.out", "w");
fprintf(fout, "%d", maxVal);
fclose(fout);
return 0;
}