import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long[] prefix = new long[n];// 前缀和数组 int[] positiveCnt = new int[n]; // positiveCnt[i]表示从0到i一共有几个正数 long numSum = 0;// numSum标记数字的和 int posCnt = 0;// posCnt标记正数的个数 for (int i = 0; i < n; i++) { int num = sc.nextInt(); numSum += num; prefix[i] = numSum; if (num > 0) { posCnt++; } positiveCnt[i] = posCnt; } if (numSum % 3 != 0 || posCnt < 3) {//如果总和不是3的倍数或者正数的个数少于3个,直接输出0返回 System.out.println(0); return; } int res = 0; long avg = numSum / 3; for (int i = 0; i < n - 2; i++) { // 检查第一个子数组 [0, i] 是否满足条件 if (prefix[i] == avg && positiveCnt[i] > 0) { for (int j = i + 1; j < n - 1; j++) { // 检查第二个子数组 [i+1, j] 是否满足条件 if (prefix[j] == 2 * avg && positiveCnt[j] > positiveCnt[i]) { // 检查第三个子数组 [j+1, n-1] 是否满足条件 if (positiveCnt[n - 1] > positiveCnt[j]) { res++; } } } } } System.out.println(res); } }