import java.util.*;
public class Main {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); int n = scanner.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = scanner.nextInt();
}
System.
out.
println("Maximum sum of two non-overlapping subarrays: " + maxTwoSubarraySum
(nums
)); }
public static int maxTwoSubarraySum(int[] nums) {
int n = nums.length;
if (n == 0) return 0;
int[] leftMax = new int[n];
int[] rightMax = new int[n];
int currentSum
= 0, bestSum
= Integer.
MIN_VALUE; for (int i = 0; i < n; i++) {
currentSum
= Math.
max(nums
[i
], currentSum
+ nums
[i
]); bestSum
= Math.
max(bestSum, currentSum
); leftMax[i] = bestSum;
}
currentSum = 0;
for (int i = n - 1; i >= 0; i--) {
currentSum
= Math.
max(nums
[i
], currentSum
+ nums
[i
]); bestSum
= Math.
max(bestSum, currentSum
); rightMax[i] = bestSum;
}
for (int i = 0; i < n - 1; i++) {
maxSum
= Math.
max(maxSum, leftMax
[i
] + rightMax
[i
+ 1]); }
return maxSum;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgaW50IG4gPSBzY2FubmVyLm5leHRJbnQoKTsKICAgICAgICBpbnRbXSBudW1zID0gbmV3IGludFtuXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBudW1zW2ldID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgfQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTWF4aW11bSBzdW0gb2YgdHdvIG5vbi1vdmVybGFwcGluZyBzdWJhcnJheXM6ICIgKyBtYXhUd29TdWJhcnJheVN1bShudW1zKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgbWF4VHdvU3ViYXJyYXlTdW0oaW50W10gbnVtcykgewogICAgICAgIGludCBuID0gbnVtcy5sZW5ndGg7CiAgICAgICAgaWYgKG4gPT0gMCkgcmV0dXJuIDA7CgogICAgICAgIGludFtdIGxlZnRNYXggPSBuZXcgaW50W25dOwogICAgICAgIGludFtdIHJpZ2h0TWF4ID0gbmV3IGludFtuXTsKCiAgICAgICAgaW50IGN1cnJlbnRTdW0gPSAwLCBiZXN0U3VtID0gSW50ZWdlci5NSU5fVkFMVUU7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgY3VycmVudFN1bSA9IE1hdGgubWF4KG51bXNbaV0sIGN1cnJlbnRTdW0gKyBudW1zW2ldKTsKICAgICAgICAgICAgYmVzdFN1bSA9IE1hdGgubWF4KGJlc3RTdW0sIGN1cnJlbnRTdW0pOwogICAgICAgICAgICBsZWZ0TWF4W2ldID0gYmVzdFN1bTsKICAgICAgICB9CgogICAgICAgIGN1cnJlbnRTdW0gPSAwOwogICAgICAgIGJlc3RTdW0gPSBJbnRlZ2VyLk1JTl9WQUxVRTsKICAgICAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgIGN1cnJlbnRTdW0gPSBNYXRoLm1heChudW1zW2ldLCBjdXJyZW50U3VtICsgbnVtc1tpXSk7CiAgICAgICAgICAgIGJlc3RTdW0gPSBNYXRoLm1heChiZXN0U3VtLCBjdXJyZW50U3VtKTsKICAgICAgICAgICAgcmlnaHRNYXhbaV0gPSBiZXN0U3VtOwogICAgICAgIH0KCiAgICAgICAgaW50IG1heFN1bSA9IEludGVnZXIuTUlOX1ZBTFVFOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgICAgICBtYXhTdW0gPSBNYXRoLm1heChtYXhTdW0sIGxlZnRNYXhbaV0gKyByaWdodE1heFtpICsgMV0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1heFN1bTsKICAgIH0KfQo=