fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <unordered_map>
  5. using namespace std;
  6.  
  7. int maxTwoNonOverlappingSubarrays(vector<int>& nums) {
  8. int n=nums.size();
  9. unordered_map<int,int>mp;
  10. vector<int>left(n,0);
  11. vector<int>right(n,0);
  12.  
  13. int maxi=0;
  14. int curr=0;
  15.  
  16. for(int i=0;i<n;i++){
  17. curr=max(nums[i],curr+nums[i]);
  18. maxi=max(maxi,curr);
  19. left[i]=maxi;
  20. mp[i]=curr;
  21. }
  22.  
  23. for(int i=n-1;i>=0;i--){
  24. curr=max(nums[i],curr+nums[i]);
  25. maxi=max(maxi,curr);
  26. right[i]=maxi;
  27. }
  28. int ans=0;
  29. for(int i=0;i<n-1;i++){
  30. ans=max(ans, left[i]+right[i+1]);
  31. }
  32. return ans;
  33. }
  34.  
  35. int main() {
  36. vector<int> B = {5, 8, 10, 2, 5, 5};
  37. cout << maxTwoNonOverlappingSubarrays(B) << endl;
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0.01s 5312KB
stdin
Standard input is empty
stdout
70