Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/nikkk | Cod sursa (job #460445) | Istoria paginii utilizator/ionicafulgerul | Cod sursa (job #3136262)
/*
(1) Problema discreta a rucsacului
*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define NMAX 5005
#define GMAX 10005
int MAX(int a, int b) {
return a * (a > b) + b * (b > a);
}
int main() {
FILE *fin, *fout;
int i, j, n, p[NMAX], g[NMAX], gMax, dp[GMAX], ans;
fin = fopen("rucsac.in", "rt");
fout = fopen("rucsac.out", "wt");
fscanf(fin, "%d %d", &n, &gMax);
for (i = 1; i <= n; i++)
fscanf(fin, "%d %d", &g[i], &p[i]);
for (i = 1; i <= n; i++)
for (j = gMax; j >= g[i]; j--)
dp[j] = MAX(dp[j], dp[j - g[i]] + p[i]);
for (int i = 0; i <= gMax; i++)
ans = MAX(ans, dp[i]);
fprintf(fout, "%d\n", ans);
fclose(fin);
fclose(fout);
return 0;
}