Advertisement
AkirusG

Untitled

Nov 20th, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <limits>
  7. #include <map>
  8. #include <cstdlib>
  9. #include <cmath>
  10. #include <set>
  11. #include <bitset>
  12. #include <string>
  13. #include <iomanip>
  14. #include <deque>
  15. #include <set>
  16.  
  17. using namespace std;
  18.  
  19. int main(){
  20.     //freopen("phoneline.in", "r", stdin); freopen("phoneline.out", "w", stdout);
  21.     freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
  22.     ios::sync_with_stdio(false);
  23.    
  24.     int n, k;
  25.     cin >> n >> k;
  26.     vector<int> m(n);
  27.     vector<int> c(n);
  28.    
  29.     for(int i = 0; i < n; i++)
  30.         cin >> m[i];
  31.    
  32.     for(int i = 0; i < n; i++)
  33.         cin >> c[i];
  34.    
  35.     int last = 0;
  36.     int b[1000001];
  37.    
  38.     for(int i = 0; i < 1000001; i++)
  39.         b[i] = -1;
  40.     b[0] = 0;
  41.    
  42.     for(int i = 0; i < n; i++){
  43.         for(int j = last; j >= 0; j--){
  44.             if(b[j] != -1){
  45.                 b[j+m[i]] = max(b[j+m[i]], b[j] + c[i]);
  46.                 if(j+m[i] > last)
  47.                     last = j+m[i];
  48.             }
  49.         }
  50.     }
  51.    
  52.     int mx = 0;
  53.     for(int i = 1; i <= k; i++)
  54.         if(b[i] > mx)
  55.             mx = b[i];
  56.    
  57.     cout << mx;
  58.    
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement