For problem statement at 1000-1999/1100-1199/1110-1119/1112/problemE.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1110-1119/1112/verifierE.go ends with case 16 failed: expected 19
2 -1
2 -1
2 -1
2 -1
3 1
3 1
3 1
3 1
3 1
3 1
3 1
3 1
4 -1
4 -1
4 -1
4 -1
4 -1
4 -1
4 -1 got 19
2 -1
3 1
4 -1
2 -1
3 1
4 -1
2 -1
3 1
4 -1
2 -1
3 1
4 -1
3 1
4 -1
3 1
4 -1
3 1
4 -1
3 1
input:
5
94257
90660
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(reader, &n)
var A, B string
fmt.Fscan(reader, &A)
fmt.Fscan(reader, &B)
a := make([]int, n)
b := make([]int, n)
for i := 0; i < n; i++ {
a[i] = int(A[i] - '0')
b[i] = int(B[i] - '0')
}
c := make([]int, n)
c[0] = b[0] - a[0]
for i := 1; i < n; i++ {
c[i] = b[i] - a[i] - c[i-1]
}
if c[n-1] != 0 {
fmt.Println("-1")
return
}
C := int64(0)
for i := 0; i < n-1; i++ {
if c[i] > 0 {
C += int64(c[i])
} else {
C += int64(-c[i])
}
}
fmt.Println(C)
if C == 0 {
return
}
isValid := func(i int) bool {
if c[i] > 0 {
return a[i] < 9 && a[i+1] < 9
} else if c[i] < 0 {
if i == 0 && a[0] <= 1 {
return false
}
return a[i] > 0 && a[i+1] > 0
}
return false
}
queue := make([]int, 0, n)
inQueue := make([]bool, n-1)
for i := 0; i < n-1; i++ {
if isValid(i) {
queue = append(queue, i)
inQueue[i] = true
}
}
moves := 0
head := 0
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
for moves < 100000 && head < len(queue) {
curr := queue[head]
head++
inQueue[curr] = false
if !isValid(curr) {
continue
}
sign := 1
if c[curr] < 0 {
sign = -1
}
a[curr] += sign
a[curr+1] += sign
c[curr] -= sign
fmt.Fprintln(writer, curr+1, sign)
moves++
for _, idx := range []int{curr - 1, curr, curr + 1} {
if idx >= 0 && idx < n-1 {
if !inQueue[idx] && isValid(idx) {
queue = append(queue, idx)
inQueue[idx] = true
}
}
}
}
}