For problem statement at 1000-1999/1100-1199/1120-1129/1120/problemB.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1120-1129/1120/verifierB.go ends with reference runtime error: exec: "ref1120B.bin": executable file not found in $PATH can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func readWord(reader *bufio.Reader) []byte {
var res []byte
for {
b, err := reader.ReadByte()
if err != nil {
break
}
if b > ' ' {
res = append(res, b)
break
}
}
for {
b, err := reader.ReadByte()
if err != nil || b <= ' ' {
break
}
res = append(res, b)
}
return res
}
func main() {
reader := bufio.NewReaderSize(os.Stdin, 65536)
word := readWord(reader)
if len(word) == 0 {
return
}
n := 0
for _, b := range word {
n = n*10 + int(b-'0')
}
aStr := readWord(reader)
bStr := readWord(reader)
A := make([]int, n+1)
B := make([]int, n+1)
for i := 1; i <= n; i++ {
A[i] = int(aStr[i-1] - '0')
B[i] = int(bStr[i-1] - '0')
}
x := make([]int64, n+1)
var C int64 = 0
for i := 1; i <= n; i++ {
diff := int64(B[i] - A[i])
x[i] = diff - x[i-1]
}
if x[n] != 0 {
fmt.Println("-1")
return
}
for i := 1; i < n; i++ {
if x[i] > 0 {
C += x[i]
} else {
C -= x[i]
}
}
out := bufio.NewWriterSize(os.Stdout, 65536)
defer out.Flush()
fmt.Fprintln(out, C)
isValid := func(i int) bool {
if x[i] > 0 {
return A[i] < 9 && A[i+1] < 9
}
if x[i] < 0 {
if i == 1 && A[i] <= 1 {
return false
}
return A[i] > 0 && A[i+1] > 0
}
return false
}
q := make([]int, 0, n+300000)
for i := 1; i < n; i++ {
if isValid(i) {
q = append(q, i)
}
}
moves := int64(0)
limit := C
if limit > 100000 {
limit = 100000
}
head := 0
for head < len(q) && moves < limit {
i := q[head]
head++
if !isValid(i) {
continue
}
if x[i] > 0 {
A[i]++
A[i+1]++
x[i]--
fmt.Fprintf(out, "%d 1\n", i)
} else {
A[i]--
A[i+1]--
x[i]++
fmt.Fprintf(out, "%d -1\n", i)
}
moves++
if isValid(i) {
q = append(q, i)
}
if i > 1 && isValid(i-1) {
q = append(q, i-1)
}
if i+1 < n && isValid(i+1) {
q = append(q, i+1)
}
}
}