Pagini recente » Cod sursa (job #2519911) | Cod sursa (job #2335365) | Cod sursa (job #2894104) | Cod sursa (job #699891) | Cod sursa (job #2612243)
#include <cstdio>
#define max(a, b) ((a > b) ? a : b)
int main() {
int n, Wmax, P[5001], W[5001], i, w, dp[2][10001] {}, l = 0;
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
scanf("%d%d", &n, &Wmax);
for(i = 1; i <= n; ++i)
scanf("%d%d", &W[i], &P[i]);
for(i = 1; i <= n; ++i, l = 1-l)
for(w = W[i]; w <= Wmax; ++w)
if(W[i] <= w)
dp[1-l][w] = max(dp[l][w], dp[l][w-W[i]] + P[i]);
else
dp[1-l][w] = dp[l][w];
printf("%d", dp[l][Wmax]);
}