#include <iostream> #include <vector> using namespace std; int main() { int n; cin>>n; vector<int> arr(n,0); for(int i=0;i<n;i++){ cin>>arr[i]; } //求非环的连续最大值 int current_maxValue=arr[0]; int maxValue=arr[0]; for(int i=1;i<n;i++){ if(current_maxValue+arr[i]>arr[i]){ current_maxValue+=arr[i]; }else{ current_maxValue=arr[i]; } maxValue=max(current_maxValue,maxValue); } //求非环数组最小值 int current_minValue=arr[0]; int minValue=arr[0]; for(int i=1;i<n;i++){ if(current_minValue+arr[i]<arr[i]){ current_minValue+=arr[i]; }else{ current_minValue=arr[i]; } minValue=min(current_minValue,minValue); } //求数组和 int totalSum=arr[0]; for(int i=1;i<n;i++){ totalSum+=arr[i]; } int circle_Sum=0; if(totalSum==minValue){//如果数组和等于最小值和,意味着他们全部为负数,比如-3 -2 -1 -3 -5 circle_Sum=maxValue;//最大值为-1 }else{ circle_Sum=max(totalSum-minValue,maxValue); } cout<<circle_Sum; return 0; } // 64 位输出请用 printf("%lld")