fork download
  1. //DP Knapsack 0-1 Bottom Up
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. int W[1001], V[1001];
  5. long long dp[1001][1001];
  6.  
  7. int main() {
  8. int n, m;
  9. cin >> n >> m;
  10. for (int i = 1; i <= n; i++) {
  11. cin >> W[i] >> V[i];
  12. }
  13. for (int i = 1; i <= n; i++) {
  14. for (int j = 0; j <= m; j++) {
  15. if (i == 1) {
  16. if (W[i] <= j) dp[i][j] = V[i];
  17. else dp[i][j] = 0;
  18. } else {
  19. if (W[i] <= j) dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - W[i]] + V[i]);
  20. else dp[i][j] = dp[i - 1][j];
  21. }
  22. }
  23. }
  24. cout << dp[n][m] << "\n";
  25. }
Success #stdin #stdout 0s 23072KB
stdin
3 10
9 8
6 7
4 4
stdout
11