Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. class Solution {
  2. public:
  3. int helper(vector<int> A, int l, int m, vector<int> sum)
  4. {
  5. int left = 0, right = left + l;
  6. int lsum = 0;
  7. int index;
  8. while(right < sum.size())
  9. {
  10. int diff = sum[right] - sum[left];
  11. if(diff > lsum)
  12. {
  13. lsum = diff;
  14. index = left;
  15. }
  16. left++;
  17. right++;
  18. }
  19. int i = left;
  20. while(i < left + l)
  21. {
  22. if(i > 0)
  23. sum[i] = sum[i - 1];
  24. i++;
  25. }
  26.  
  27. int msum = 0;
  28. left = 0;
  29. right = left + m;
  30. while(right < sum.size())
  31. {
  32. int diff = sum[right] - sum[left];
  33. msum = max(msum, diff);
  34. left++;
  35. right++;
  36. }
  37. cout<<lsum<<" "<<msum<<endl;
  38. return lsum + msum;
  39. }
  40.  
  41. int maxSumTwoNoOverlap(vector<int>& A, int L, int M) {
  42. vector<int> sum(A.size());
  43. sum[0] = A[0];
  44. for(int i = 1; i < A.size(); i++)
  45. sum[i] = sum[i - 1] + A[i];
  46. return max(helper(A, L, M, sum), helper(A, M, L, sum));
  47.  
  48. }
  49. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement