Advertisement
Guest User

knapsack - iterativna dinamika, jos manje memorije

a guest
Feb 20th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cstring>
  4.  
  5. const int MAXN = 2010;
  6.  
  7. int s, n;
  8. int dp[MAXN];
  9. int a[MAXN];
  10. int b[MAXN];
  11.  
  12. int main() {
  13.   scanf("%d%d", &s, &n);
  14.   for (int i = 0; i < n; ++i) {
  15.     scanf("%d%d", &a[i], &b[i]);
  16.   }
  17.  
  18.   for (int i = 0; i < n; ++i) {
  19.     for (int j = s; j >= 0; --j) {
  20.       if (j + a[i] <= s) {
  21.         dp[j + a[i]] = std::max(dp[j + a[i]], dp[j] + b[i]);
  22.       }
  23.     }
  24.   }
  25.   int ans = 0;
  26.   for (int i = 0; i <= s; ++i) {
  27.     ans = std::max(ans, dp[i]);
  28.   }
  29.   printf("%d\n", ans);
  30.   return 0;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement