Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int try_this (vector<int>& A, int L, int M)
- {
- int res = -1;
- int sz = A.size();
- vector <int> lsum (sz,0);
- vector <int> mxlsum(sz,0);
- lsum[0] = A[0];
- mxlsum[0] = A[0];
- for (int i = 1 ; i < sz ; i ++ )
- {
- lsum[i] = lsum[i -1] + A[i] - (i >= L ? A[i-L] : 0);
- mxlsum[i] = max (mxlsum[i-1], lsum[i]);
- }
- vector <int> rsum (sz,0);
- vector <int> mxrsum (sz,0);
- rsum[sz - 1] = 0;
- mxrsum[sz - 1] = 0;
- for (int i = sz - 2 ; i >= 0 ; i--)
- {
- rsum[i] = rsum[i+1] + A[i+1] - (i+M+1 < sz ? A[i+M+1] : 0);
- mxrsum[i] = max (mxrsum[i+1], rsum[i]);
- res = max (res,mxrsum[i] + mxlsum[i] );
- }
- return res ;
- }
- int maxSumTwoNoOverlap(vector<int>& A, int L, int M) {
- return max (try_this(A,L,M), try_this(A,M,L));
- }
- };
Add Comment
Please, Sign In to add comment