Pagini recente » Cod sursa (job #1172326) | Cod sursa (job #392925) | Cod sursa (job #15970) | Cod sursa (job #1329072) | Cod sursa (job #1427661)
#include <cstdio>
#include <cstring>
int max (int a, int b) { return a > b ? a : b; }
int main() {
freopen ("rucsac.in", "r", stdin);
freopen ("rucsac.out", "w", stdout);
int n, f, s, w;
scanf ("%d%d", &n, &w);
int d[n+1][w+1], c[n+1], g[n+1];
memset (c, 0, (n + 1) * sizeof (int));
memset (g, 0, (n + 1) * sizeof (int));
memset (d, 0, (n + 1) * (w + 1) * sizeof (int));
for (int i = 1; i <= n; ++i) {
scanf ("%d%d", &f, &s);
c[i] = s;
g[i] = f;
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= w; ++j) {
d[i][j] = max (d[i-1][j], d[i-1][j-g[i]] + c[i]);
}
}
printf ("%d\n", d[n][w]);
return 0;
}