For problem statement at 1000-1999/1200-1299/1280-1289/1286/problemF.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1280-1289/1286/verifierF.go ends with case 1 failed: expected 3 got 2
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func abs(x int64) int64 {
if x < 0 {
return -x
}
return x
}
func dfs(idx int, currentSum int64, count int, vals []int64, minT, maxT int64, posSuffixSum []int64, negSuffixSum []int64) bool {
if currentSum >= minT && currentSum <= maxT {
if count > 0 && count < len(vals) {
return true
}
}
if idx == len(vals) {
return false
}
if currentSum+posSuffixSum[idx] < minT {
return false
}
if currentSum+negSuffixSum[idx] > maxT {
return false
}
if dfs(idx+1, currentSum+vals[idx], count+1, vals, minT, maxT, posSuffixSum, negSuffixSum) {
return true
}
if dfs(idx+1, currentSum, count, vals, minT, maxT, posSuffixSum, negSuffixSum) {
return true
}
return false
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
a := make([]int64, 0, n)
for i := 0; i < n; i++ {
scanner.Scan()
val, _ := strconv.ParseInt(scanner.Text(), 10, 64)
if val != 0 {
a = append(a, val)
}
}
N := len(a)
if N == 0 {
fmt.Println(0)
return
}
valid := make([]bool, 1<<N)
vals := make([]int64, N)
posSuffix := make([]int64, N+1)
negSuffix := make([]int64, N+1)
for mask := 1; mask < (1<<N); mask++ {
k := 0
var S int64 = 0
for i := 0; i < N; i++ {
if (mask & (1 << i)) != 0 {
vals[k] = a[i]
S += a[i]
k++
}
}
if k < 2 {
continue
}
if abs(S)%2 != int64(k-1)%2 {
continue
}
minT := (S - int64(k) + 1) / 2
maxT := (S + int64(k) - 1) / 2
posSuffix[k] = 0
negSuffix[k] = 0
for i := k - 1; i >= 0; i-- {
posSuffix[i] = posSuffix[i+1]
negSuffix[i] = negSuffix[i+1]
if vals[i] > 0 {
posSuffix[i] += vals[i]
} else {
negSuffix[i] += vals[i]
}
}
valid[mask] = dfs(0, 0, 0, vals[:k], minT, maxT, posSuffix, negSuffix)
}
dp := make([]int8, 1<<N)
for mask := 1; mask < (1<<N); mask++ {
lsb := mask & -mask
rem := mask ^ lsb
res := dp[rem]
for subRem := rem; subRem > 0; subRem = (subRem - 1) & rem {
if valid[subRem|lsb] {
if cand := dp[rem^subRem] + 1; cand > res {
res = cand
}
}
}
if valid[lsb] {
if cand := dp[rem] + 1; cand > res {
res = cand
}
}
dp[mask] = res
}
fmt.Println(N - int(dp[(1<<N)-1]))
}
```