Pagini recente » Cod sursa (job #1588126) | Cod sursa (job #1198463) | Cod sursa (job #1636433) | Cod sursa (job #1928394) | Cod sursa (job #1956694)
#include <stdio.h>
#define FIN "rucsac.in"
#define FOUT "rucsac.out"
#define MAXW 10001
#define MAXC 5001
int i,j,
n,//number of objects
g,//capacity of the knapsack
w[ MAXW ], //weight
c[ MAXC ]; //costs
// A utility function that returns maximum of two integers
int max(int a, int b) { return (a > b)? a : b; }
int Profit(int n, int g) {
int Cost[n+100][g+100];
for(i = 1; i <= n; ++i) {
for(j = 1; j <= g; ++j) {
if(w[i] <= j)
Cost[i][j] = max( Cost[i - 1][j - w[i]] + c[ i ], Cost[i-1][j] );
else
Cost[i][j] = Cost[ i - 1][ j ];
}
}
return Cost[n][g];
}
int main() {
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d", &n, &g);
for(i = 1; i <= n; i++) {
scanf("%d", &w[ i ]);
scanf("%d", &c[ i ]);
}
printf("%d", Profit(n,g));
return(0);
}