#include <iostream>using namespace std;
const int N = 100010;int a[N], f[N], g[N];int main() {int n;cin >> n;
for(int i = 0; i < n; i ++){ cin >> a[i]; f[i] = a[i]; g[i] = a[i]; } int sum = a[0], minN = 0, maxN = a[0]; for(int i = 1; i < n; i ++){ f[i] = max(f[i - 1] + a[i], a[i]); sum += a[i]; if(f[i] > maxN) maxN = f[i]; } // 找中间是否出现负数 因为如果数组全是正数 就不会经过环 在1 - n就是最大值了 // 所以要在 1 - n - 1寻找最小的包含负数的子数组 for(int i = 1; i < n - 1; i ++){ g[i] = min(g[i - 1] + a[i], g[i]); if(g[i] < minN) minN = g[i]; } int res = -1e9; // 最后比较 在环内的数组大还是环外的大 res = max(sum - minN, maxN); cout << res << endl; return 0;
}