Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int helper(vector<int> A, int l, int m, vector<int> sum)
- {
- int left = 0, right = left + l;
- int lsum = 0;
- int index;
- while(right < sum.size())
- {
- int diff = sum[right] - sum[left];
- if(diff > lsum)
- {
- lsum = diff;
- index = left;
- }
- left++;
- right++;
- }
- int i = left;
- while(i < left + l)
- {
- if(i > 0)
- sum[i] = sum[i - 1];
- i++;
- }
- int msum = 0;
- left = 0;
- right = left + m;
- while(right < sum.size())
- {
- int diff = sum[right] - sum[left];
- msum = max(msum, diff);
- left++;
- right++;
- }
- cout<<lsum<<" "<<msum<<endl;
- return lsum + msum;
- }
- int maxSumTwoNoOverlap(vector<int>& A, int L, int M) {
- vector<int> sum(A.size());
- sum[0] = A[0];
- for(int i = 1; i < A.size(); i++)
- sum[i] = sum[i - 1] + A[i];
- return max(helper(A, L, M, sum), helper(A, M, L, sum));
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement