#include using namespace std; typedef long long int ll; ll findProductSum(vector A, ll n) { ll array_sum = 0; for (ll i = 0; i < n; i++) array_sum = array_sum + A[i]; ll array_sum_square = array_sum * array_sum; ll individual_square_sum = 0; for (ll i = 0; i < n; i++) individual_square_sum += A[i]*A[i]; return (array_sum_square - individual_square_sum)/2; } ll maxSubArraySum(vector a, ll size) { ll max_so_far = INT_MIN, max_ending_here = 0, start =0, end = 0, s=0; for (ll i=0; i< size; i++ ) { max_ending_here += a[i]; if (max_so_far < max_ending_here) { max_so_far = max_ending_here; start = s; end = i; } if (max_ending_here < 0) { max_ending_here = 0; s = i + 1; } } vector A(end-start+1); ll x=0; for(ll k=start;k<=end;k++){ A[x]=a[k]; ++x; } return findProductSum( A, (end-start+1)); } /*Driver program to test maxSubArraySum*/ int main() { ll n; cin>>n; vector a(n); for(ll i=0;i>a[i]; } ll max_sum = maxSubArraySum(a, n); cout<< max_sum<<"\n"; return 0; }