//第二 package shangtang; import java.util.Scanner; /** * @Param: 6 * 3 -1 8 6 5 2 * @Date: 2019/9/21 19:40 */ public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); String inputs = sc.nextLine(); String[] s = inputs.split(" "); if(s.length != n) throw new RuntimeException("输入有误"); int[] nums = new int[n]; for(int i=0;i<n;i++) nums[i] = Integer.valueOf(s[i]); //如果全部数字小于0 boolean nf = true; int minVal = Integer.MIN_VALUE; for(int i=0;i<n;i++){ if(nums[i]>0){ nf = false; break; } minVal = Math.max(minVal,nums[i]); } if(nf){ System.out.println(minVal); return; } int maxVal = Integer.MIN_VALUE; //最大总和 int curVal = 0; // 当前总和 int startAddIndex = 0; //开始相加时候的下标 , 记录让和为0时的下标 for(;startAddIndex<n;startAddIndex++){ curVal = 0; for(int i=startAddIndex;i<n+startAddIndex;i++){ int index = i%n; curVal += nums[index]; if(curVal<0){ curVal = 0; } if(curVal>maxVal) maxVal = curVal; } } System.out.println(maxVal); } }