Pagini recente » Cod sursa (job #3122900) | Cod sursa (job #2598341) | Cod sursa (job #1105727) | Cod sursa (job #2975174) | Cod sursa (job #1866855)
#include <cstdio>
#define WMAX 10001
#define NMAX 5001
#define MAX(A, B) A >= B? A : B
#define INF 1e9
using namespace std;
FILE *f = freopen("rucsac.in", "r", stdin);
FILE *g = freopen("rucsac.out", "w", stdout);
int dp[NMAX][WMAX];
int N, GMAX, C[NMAX], G[NMAX];
void read() {
scanf("%d%d", &N, &GMAX);
for(int i = 1; i<=N; i++)
scanf("%d%d", &G[i], &C[i]);
}
void dinamic() {
for(int i = 1; i<=N; i++)
for(int CW = 0; CW <= GMAX; CW ++) {
dp[i][CW] = dp[i - 1][CW];
if(G[i] <= CW)
dp[i][CW] = MAX(dp[i][CW], dp[i - 1][CW - G[i]] + C[i]);
}
//printf("%d", dp[N][GMAX]);
}
int main() {
read();
dinamic();
printf("%d", dp[N][GMAX]);
return 0;
}