2
public int maximumSum(int[] arr) {4
int[] prefixSum = new int[n + 1];7
for (int i = 1; i <= n; i++) {8
prefixSum[i] = prefixSum[i - 1] + arr[i - 1];9
ans = Math.max(ans, arr[i - 1]);11
if (ans < 0) return ans;12
for (int i = 1; i <= n; i++) {14
int leftPrefixSum = 0;16
for (int j = i - 1; j >= 0; j--) {17
leftPrefixSum = Math.max(leftPrefixSum, prefixSum[i - 1] - prefixSum[j]);20
int rightPrefixSum = 0;22
for (int j = i + 1; j <= n; j++) {23
rightPrefixSum = Math.max(rightPrefixSum, prefixSum[j] - prefixSum[i]);25
ans = Math.max(ans, leftPrefixSum + rightPrefixSum);28
return Math.max(ans, prefixSum[n]);