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 (
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
pos := 0
next := func() string {
for pos < len(data) && data[pos] <= ' ' {
pos++
}
start := pos
for pos < len(data) && data[pos] > ' ' {
pos++
}
return string(data[start:pos])
}
n64, _ := strconv.ParseInt(next(), 10, 64)
n := int(n64)
a := next()
bs := next()
d := make([]int, n+1)
b := make([]int, n+1)
for i := 1; i <= n; i++ {
d[i] = int(a[i-1] - '0')
b[i] = int(bs[i-1] - '0')
}
m := n - 1
rem := make([]int64, n)
rem[1] = int64(b[1] - d[1])
for i := 2; i <= m; i++ {
rem[i] = int64(b[i]-d[i]) - rem[i-1]
}
if rem[m] != int64(b[n]-d[n]) {
os.Stdout.Write([]byte("-1"))
return
}
var c int64
for i := 1; i <= m; i++ {
if rem[i] < 0 {
c -= rem[i]
} else {
c += rem[i]
}
}
limit := c
if limit > 100000 {
limit = 100000
}
out := make([]byte, 0, 32+int(limit)*12)
out = strconv.AppendInt(out, c, 10)
out = append(out, '\n')
if limit == 0 {
os.Stdout.Write(out)
return
}
ptr := 1
var printed int64
stack := make([]int, 0, n)
outer:
for printed < limit {
for ptr <= m && rem[ptr] == 0 {
ptr++
}
if ptr > m {
break
}
stack = stack[:0]
cur := ptr
for {
if rem[cur] > 0 {
if d[cur+1] == 9 {
stack = append(stack, cur)
cur++
continue
}
} else {
if d[cur+1] == 0 {
stack = append(stack, cur)
cur++
continue
}
}
break
}
if rem[cur] > 0 {
d[cur]++
d[cur+1]++
rem[cur]--
out = strconv.AppendInt(out, int64(cur), 10)
out = append(out, ' ', '1', '\n')
} else {
d[cur]--
d[cur+1]--
rem[cur]++
out = strconv.AppendInt(out, int64(cur), 10)
out = append(out, ' ', '-', '1', '\n')
}
printed++
if printed >= limit {
break
}
for k := len(stack) - 1; k >= 0; k-- {
idx := stack[k]
if rem[idx] > 0 {
d[idx]++
d[idx+1]++
rem[idx]--
out = strconv.AppendInt(out, int64(idx), 10)
out = append(out, ' ', '1', '\n')
} else {
d[idx]--
d[idx+1]--
rem[idx]++
out = strconv.AppendInt(out, int64(idx), 10)
out = append(out, ' ', '-', '1', '\n')
}
printed++
if printed >= limit {
break outer
}
}
}
os.Stdout.Write(out)
}