import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] nums = new int[n]; int index = 0; // 求解最大子段和问题的最优解:Kadane 算法 while (in.hasNextInt()) { // 注意 while 处理多个 case nums[index] = in.nextInt(); index++; } long maxSum = nums[0]; long currentSum = nums[0]; // 当前子段和(以 i 结尾) for(int i = 1; i < n; i++){ // 选择:要么延续前一段,要么从当前元素重新开始 currentSum = Math.max(nums[i], currentSum + nums[i]); // 更新全局最大值 maxSum = Math.max(maxSum, currentSum); } System.out.println(maxSum); } }