#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S max_L( S a,T b) {
return a>= b? a: b;
}
template < class S, class T> inline S chmax( S & a, T b) {
if ( a< b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int maximumSum( vector< int > & A) {
int i;
int mx;
int N;
int lf[ 100000 ] ;
int rg[ 100000 ] ;
int res = 0 ;
N = A.size ( ) ;
{
int Lj4PdHRW;
int KL2GvlyY;
if ( N== 0 ) {
KL2GvlyY = 0 ;
}
else {
KL2GvlyY = A[ 0 ] ;
for ( Lj4PdHRW= ( 1 ) ; Lj4PdHRW< ( N) ; Lj4PdHRW++ ) {
KL2GvlyY = max_L( KL2GvlyY, A[ Lj4PdHRW] ) ;
}
}
mx = KL2GvlyY;
}
if ( mx <= 0 ) {
return mx;
}
lf[ 0 ] = 0 ;
for ( i= ( 1 ) ; i< ( N) ; i++ ) {
lf[ i] = max_L( 0 , lf[ i- 1 ] + A[ i- 1 ] ) ;
}
rg[ N- 1 ] = 0 ;
for ( i= N- 2 ; i>= 0 ; i-- ) {
rg[ i] = max_L( 0 , rg[ i+ 1 ] + A[ i+ 1 ] ) ;
}
for ( i= 0 ; i< ( N) ; i++ ) {
chmax( res, max_L( 0 , A[ i] ) + lf[ i] + rg[ i] ) ;
}
return res;
}
}
;
// cLay varsion 20190914-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int maximumSum(vector<int>& A) {
// int i, mx, N;
// int lf[1d5], rg[1d5];
// int res = 0;
//
// N = A.size();
//
// mx = max(A(N));
// if(mx <= 0) return mx;
//
// lf[0] = 0;
// rep(i,1,N) lf[i] = max(0, lf[i-1]+A[i-1]);
// rg[N-1] = 0;
// for(i=N-2;i>=0;i--) rg[i] = max(0, rg[i+1]+A[i+1]);
//
// rep(i,N) res >?= max(0, A[i]) + lf[i] + rg[i];
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIG1heF9MKFMgYSxUIGIpewogIHJldHVybiBhPj1iP2E6YjsKfQp0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPiBpbmxpbmUgUyBjaG1heChTICZhLCBUIGIpewogIGlmKGE8Yil7CiAgICBhPWI7CiAgfQogIHJldHVybiBhOwp9CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIGludCBtYXhpbXVtU3VtKHZlY3RvcjxpbnQ+JiBBKXsKICAgIGludCBpOwogICAgaW50IG14OwogICAgaW50IE47CiAgICBpbnQgbGZbMTAwMDAwXTsKICAgIGludCByZ1sxMDAwMDBdOwogICAgaW50IHJlcyA9IDA7CiAgICBOID0gQS5zaXplKCk7CiAgICB7CiAgICAgIGludCBMajRQZEhSVzsKICAgICAgaW50IEtMMkd2bHlZOwogICAgICBpZihOPT0wKXsKICAgICAgICBLTDJHdmx5WSA9IDA7CiAgICAgIH0KICAgICAgZWxzZXsKICAgICAgICBLTDJHdmx5WSA9IEFbMF07CiAgICAgICAgZm9yKExqNFBkSFJXPSgxKTtMajRQZEhSVzwoTik7TGo0UGRIUlcrKyl7CiAgICAgICAgICBLTDJHdmx5WSA9IG1heF9MKEtMMkd2bHlZLCBBW0xqNFBkSFJXXSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIG14ID1LTDJHdmx5WTsKICAgIH0KICAgIGlmKG14IDw9IDApewogICAgICByZXR1cm4gbXg7CiAgICB9CiAgICBsZlswXSA9IDA7CiAgICBmb3IoaT0oMSk7aTwoTik7aSsrKXsKICAgICAgbGZbaV0gPW1heF9MKDAsIGxmW2ktMV0rQVtpLTFdKTsKICAgIH0KICAgIHJnW04tMV0gPSAwOwogICAgZm9yKGk9Ti0yO2k+PTA7aS0tKXsKICAgICAgcmdbaV0gPW1heF9MKDAsIHJnW2krMV0rQVtpKzFdKTsKICAgIH0KICAgIGZvcihpPTA7aTwoTik7aSsrKXsKICAgICAgY2htYXgocmVzLCBtYXhfTCgwLCBBW2ldKSsgbGZbaV0gKyByZ1tpXSk7CiAgICB9CiAgICByZXR1cm4gcmVzOwogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDE5MDkxNC0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGludCBtYXhpbXVtU3VtKHZlY3RvcjxpbnQ+JiBBKSB7Ci8vICAgICBpbnQgaSwgbXgsIE47Ci8vICAgICBpbnQgbGZbMWQ1XSwgcmdbMWQ1XTsKLy8gICAgIGludCByZXMgPSAwOwovLyAKLy8gICAgIE4gPSBBLnNpemUoKTsKLy8gCi8vICAgICBteCA9IG1heChBKE4pKTsKLy8gICAgIGlmKG14IDw9IDApIHJldHVybiBteDsKLy8gCi8vICAgICBsZlswXSA9IDA7Ci8vICAgICByZXAoaSwxLE4pIGxmW2ldID0gbWF4KDAsIGxmW2ktMV0rQVtpLTFdKTsKLy8gICAgIHJnW04tMV0gPSAwOwovLyAgICAgZm9yKGk9Ti0yO2k+PTA7aS0tKSByZ1tpXSA9IG1heCgwLCByZ1tpKzFdK0FbaSsxXSk7Ci8vIAovLyAgICAgcmVwKGksTikgcmVzID4/PSBtYXgoMCwgQVtpXSkgKyBsZltpXSArIHJnW2ldOwovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==