#include using namespace std; int start, end1; void maxSubArraySum(vector a, int size) { int max_so_far = INT_MIN, max_ending_here = 0; start = 0; end1 = 0; for (int i = 0; i < size; i++) { max_ending_here = max_ending_here + a[i]; if (max_so_far < max_ending_here) { max_so_far = max_ending_here; end1 = i; } if (max_ending_here < 0) { max_ending_here = 0; start = i+1; } } } long largestValue(vector A, int n) { // Return the largest value of any of A's nonempty subarrays. maxSubArraySum(A,n); int sum1=0, sum2=0; for(int i=start; i<=end1; i++) { sum1 = sum1 + A[i]; sum2 = sum2 + A[i]*A[i]; } return sum1*sum1-sum2; } int main() { int n; cin >> n; vector A(n); for(int A_i = 0; A_i < n; A_i++){ cin >> A[A_i]; } long result = largestValue(A,n); cout << result/2 << endl; return 0; }