#include using namespace std; long largestValue(vector A) { // Return the largest value of any of A's nonempty subarrays. int a[A.size()][A.size()]; int b[A.size()][A.size()]; for(int i = 0; i < A.size(); i++) { for(int j = 0; j < A.size(); j++) { a[i][j] = 0; } } long max = a[0][0]; for(int i = 0; i < A.size(); i++) { for(int j = i; j < A.size(); j++) for(int k = 0; k <= i; k++) { b[i-k][j] = b[i-k][j] + A.at(i); if(k == 0) a[i-k][j] = A.at(i); else a[i-k][j] = a[i-k][j] + (A.at(i)*b[i-k][j]); } //a[i][i] = a[i][i] + A.at(i); } for(int i = 0; i < A.size(); i++) { for(int j = 0; j < A.size(); j++) { cout << a[i][j] << " "; if(a[i][j] > max) max = a[i][j]; } cout << "\n"; } return max; } 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); cout << result << endl; return 0; }