Pagini recente » Cod sursa (job #3270122) | Cod sursa (job #2730610) | Cod sursa (job #3132223) | Cod sursa (job #2311798) | Cod sursa (job #3259358)
#include <stdio.h>
#define NMAX 5001
#define GMAX 10001
int res[GMAX];
int w[NMAX], p[NMAX];
int main() {
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n, maxweight;
scanf("%d%d", &n, &maxweight);
for(int i = 1; i <= n; ++i)
scanf("%d%d", &w[i], &p[i]);
int currentmax = 0, currentprofit = 0;
for(int i = 1; i <= n; ++i)
for(int j = currentmax; j >= 0; --j)
if (j + w[i] <= maxweight) {
if (j + w[i] > currentmax)
currentmax = j + w[i];
if (res[j] + p[i] > res[j + w[i]]) {
res[j + w[i]] = res[j] + p[i];
if (res[j + w[i]] > currentprofit)
currentprofit = res[j + w[i]];
}
}
printf("%d\n", currentprofit);
return 0;
}