#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
int maxTwoNonOverlappingSubarrays(vector<int>& nums) {
int n=nums.size();
unordered_map<int,int>mp;
vector<int>left(n,0);
vector<int>right(n,0);
int maxi=0;
int curr=0;
for(int i=0;i<n;i++){
curr=max(nums[i],curr+nums[i]);
maxi=max(maxi,curr);
left[i]=maxi;
mp[i]=curr;
}
for(int i=n-1;i>=0;i--){
curr=max(nums[i],curr+nums[i]);
maxi=max(maxi,curr);
right[i]=maxi;
}
int ans=0;
for(int i=0;i<n-1;i++){
ans=max(ans, left[i]+right[i+1]);
}
return ans;
}
int main() {
vector<int> B = {5, 8, 10, 2, 5, 5};
cout << maxTwoNonOverlappingSubarrays(B) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYXhUd29Ob25PdmVybGFwcGluZ1N1YmFycmF5cyh2ZWN0b3I8aW50PiYgbnVtcykgewoJaW50IG49bnVtcy5zaXplKCk7Cgl1bm9yZGVyZWRfbWFwPGludCxpbnQ+bXA7Cgl2ZWN0b3I8aW50PmxlZnQobiwwKTsKCXZlY3RvcjxpbnQ+cmlnaHQobiwwKTsKCQoJaW50IG1heGk9MDsKCWludCBjdXJyPTA7CgkKCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCWN1cnI9bWF4KG51bXNbaV0sY3VycitudW1zW2ldKTsKCQltYXhpPW1heChtYXhpLGN1cnIpOwoJCWxlZnRbaV09bWF4aTsKCQltcFtpXT1jdXJyOwoJfQoJCglmb3IoaW50IGk9bi0xO2k+PTA7aS0tKXsKCQljdXJyPW1heChudW1zW2ldLGN1cnIrbnVtc1tpXSk7CgkJbWF4aT1tYXgobWF4aSxjdXJyKTsKCQlyaWdodFtpXT1tYXhpOwoJfQoJaW50IGFucz0wOwoJZm9yKGludCBpPTA7aTxuLTE7aSsrKXsKCQlhbnM9bWF4KGFucywgbGVmdFtpXStyaWdodFtpKzFdKTsKCX0KCXJldHVybiBhbnM7Cn0KCmludCBtYWluKCkgewogICAgdmVjdG9yPGludD4gQiA9IHs1LCA4LCAxMCwgMiwgNSwgNX07CiAgICBjb3V0IDw8IG1heFR3b05vbk92ZXJsYXBwaW5nU3ViYXJyYXlzKEIpIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQo=