Pagini recente » Borderou de evaluare (job #1796799) | Cod sursa (job #1241198) | Borderou de evaluare (job #2510167) | Cod sursa (job #2358294) | Cod sursa (job #2698791)
#include <stdio.h>
#define MAX_N 100
#define MAX_G 100
inline int max(int a, int b) {
return a > b ? a : b;
}
struct Produs {
int greutate, valoare;
};
Produs v[MAX_N + 1];
int d[2][MAX_G];
int main() {
FILE *fin, *fout;
int n, g, i, j;
fin = fopen("rucsac.in", "r");
fscanf(fin, "%d%d", &n, &g);
for (i = 1; i <= n; ++i)
fscanf(fin, "%d%d", &v[i].greutate, &v[i].valoare);
fclose(fin);
for (i = 1; i <= n; ++i)
for (j = 0; j <= g; ++j) {
d[i & 1][j] = d[(i - 1) & 1][j];
if (v[i].greutate <= j)
d[i & 1][j] = max(d[(i - 1) & 1][j], d[(i - 1) & 1][j - v[i].greutate] + v[i].valoare);
}
fout = fopen("rucsac.out", "w");
fprintf(fout, "%d\n", d[n & 1][g]);
fclose(fout);
return 0;
}