import java.util.*;
import java.lang.Math;
public class Main {
//Declare global variables low and high
static int low;
static int high;
//Find max sum in array arr
static int maxCrossSum(int arr[], int start, int mid, int end) {
int sum = 0;
for (int i = mid; i >= start; i--) {
sum = sum + arr[i];
if (sum > leftSum) {
low = i;
leftSum = sum;
}
}
sum = 0;
for (int i = mid; i <= end; i++) {
sum = sum + arr[i];
if (sum > rightSum) {
high = i;
rightSum = sum;
}
}
return Math.
max(leftSum
+ rightSum
- arr
[mid
],
Math.
max(leftSum, rightSum
)); }
//divide-and-conquer
static int divideAndConquer(int arr[], int start, int end) {
if (start > end)
if (start == end)
return arr[start];
//divide
int mid = (start + end) / 2;
//conquer
return Math.
max(Math.
max(divideAndConquer
(arr, start, mid
- 1), divideAndConquer
(arr, mid
+ 1, end
)), maxCrossSum
(arr, start, mid, end
)); }
public static void main
(String[] args
) {
Scanner sc
= new Scanner
(System.
in); int index = sc.nextInt();
//array size declaration
int[] arr = new int[index];
//Enter an array value
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
//Calculation
int maxSum = divideAndConquer(arr, 0, index - 1);
//Print
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLk1hdGg7CiAKcHVibGljIGNsYXNzIE1haW4gewoJCgkvL0RlY2xhcmUgZ2xvYmFsIHZhcmlhYmxlcyBsb3cgYW5kIGhpZ2gKCXN0YXRpYyBpbnQgbG93OwoJc3RhdGljIGludCBoaWdoOwoJCgkvL0ZpbmQgbWF4IHN1bSBpbiBhcnJheSBhcnIKCXN0YXRpYyBpbnQgbWF4Q3Jvc3NTdW0oaW50IGFycltdLCBpbnQgc3RhcnQsIGludCBtaWQsIGludCBlbmQpIHsKCQlpbnQgc3VtID0gMDsKCQlpbnQgbGVmdFN1bSA9IEludGVnZXIuTUlOX1ZBTFVFOwoJCWZvciAoaW50IGkgPSBtaWQ7IGkgPj0gc3RhcnQ7IGktLSkgewoJCQlzdW0gPSBzdW0gKyBhcnJbaV07CgkJCWlmIChzdW0gPiBsZWZ0U3VtKSB7CgkJCQlsb3cgPSBpOwoJCQkJbGVmdFN1bSA9IHN1bTsKCQkJfQoJCX0KIAoJCXN1bSA9IDA7CgkJaW50IHJpZ2h0U3VtID0gSW50ZWdlci5NSU5fVkFMVUU7CgkJZm9yIChpbnQgaSA9IG1pZDsgaSA8PSBlbmQ7IGkrKykgewoJCQlzdW0gPSBzdW0gKyBhcnJbaV07CgkJCWlmIChzdW0gPiByaWdodFN1bSkgewoJCQkJaGlnaCA9IGk7CgkJCQlyaWdodFN1bSA9IHN1bTsKCQkJfQoJCX0KIAoJCXJldHVybiBNYXRoLm1heChsZWZ0U3VtICsgcmlnaHRTdW0gLSBhcnJbbWlkXSwgTWF0aC5tYXgobGVmdFN1bSwgcmlnaHRTdW0pKTsKCX0KIAoJLy9kaXZpZGUtYW5kLWNvbnF1ZXIKCXN0YXRpYyBpbnQgZGl2aWRlQW5kQ29ucXVlcihpbnQgYXJyW10sIGludCBzdGFydCwgaW50IGVuZCkgewoJCWlmIChzdGFydCA+IGVuZCkKCQkJcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFOwoJCWlmIChzdGFydCA9PSBlbmQpCgkJCXJldHVybiBhcnJbc3RhcnRdOwoJCQoJCS8vZGl2aWRlCgkJaW50IG1pZCA9IChzdGFydCArIGVuZCkgLyAyOwogCgkJLy9jb25xdWVyCgkJcmV0dXJuIE1hdGgubWF4KE1hdGgubWF4KGRpdmlkZUFuZENvbnF1ZXIoYXJyLCBzdGFydCwgbWlkIC0gMSksIGRpdmlkZUFuZENvbnF1ZXIoYXJyLCBtaWQgKyAxLCBlbmQpKSwgbWF4Q3Jvc3NTdW0oYXJyLCBzdGFydCwgbWlkLCBlbmQpKTsKCX0KIAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCQoJCVNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCWludCBpbmRleCA9IHNjLm5leHRJbnQoKTsKCQkKCQkvL2FycmF5IHNpemUgZGVjbGFyYXRpb24KCQlpbnRbXSBhcnIgPSBuZXcgaW50W2luZGV4XTsKCQkvL0VudGVyIGFuIGFycmF5IHZhbHVlCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKCQkJYXJyW2ldID0gc2MubmV4dEludCgpOwoJCX0KCQkKCQkvL0NhbGN1bGF0aW9uCgkJaW50IG1heFN1bSA9IGRpdmlkZUFuZENvbnF1ZXIoYXJyLCAwLCBpbmRleCAtIDEpOwoJCQoJCS8vUHJpbnQKCQlTeXN0ZW0ub3V0LnByaW50bG4obG93ICk7CgkJU3lzdGVtLm91dC5wcmludGxuKGhpZ2gpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihtYXhTdW0pOwoJfQp9