package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) nums := make([]int, n) sum := 0 for i:=0; i< n; i++ { fmt.Scan(&nums[i]) sum += nums[i] } if sum%3 != 0 { fmt.Println(0) return } target := sum/3 preSum := make([]int,n) posCount := make([]int, n) posTotal := 0 sumTotal := 0 for i:=0; i <n; i++ { sumTotal += nums[i] preSum[i] = sumTotal if nums[i] > 0 { posTotal++ } posCount[i] = posTotal } count := 0 firstCuts :=make(map[int]struct{}) for j:=1; j < n-1; j++ { if preSum[j-1] == target && posCount[j-1] >0 { firstCuts[j-1] = struct{}{} } if preSum[j] == 2 * target && posCount[j] >0 { for i := range firstCuts { if posCount[i] < posCount[j] { count++ } } } } fmt.Println(count) }