For problem statement at 0-999/0-99/0-9/2/problemB.txt this is a correct solution, but verifier at 0-999/0-99/0-9/2/verifierB.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
pos := 0
nextInt := func() int {
for pos < len(data) && (data[pos] < '0' || data[pos] > '9') {
pos++
}
val := 0
for pos < len(data) && data[pos] >= '0' && data[pos] <= '9' {
val = val*10 + int(data[pos]-'0')
pos++
}
return val
}
n := nextInt()
size := n * n
const INF int32 = 1 << 30
dp2 := make([]int32, size)
dp5 := make([]int32, size)
p2 := make([]byte, size)
p5 := make([]byte, size)
zr, zc := -1, -1
for i := 0; i < n; i++ {
base := i * n
for j := 0; j < n; j++ {
x := nextInt()
var c2, c5 int32
if x == 0 {
if zr == -1 {
zr, zc = i, j
}
c2, c5 = INF, INF
} else {
y := x
for y&1 == 0 {
c2++
y >>= 1
}
y = x
for y%5 == 0 {
c5++
y /= 5
}
}
id := base + j
if i == 0 && j == 0 {
dp2[id] = c2
dp5[id] = c5
} else if i == 0 {
dp2[id] = dp2[id-1] + c2
dp5[id] = dp5[id-1] + c5
p2[id] = 'L'
p5[id] = 'L'
} else if j == 0 {
dp2[id] = dp2[id-n] + c2
dp5[id] = dp5[id-n] + c5
p2[id] = 'U'
p5[id] = 'U'
} else {
if dp2[id-n] < dp2[id-1] {
dp2[id] = dp2[id-n] + c2
p2[id] = 'U'
} else {
dp2[id] = dp2[id-1] + c2
p2[id] = 'L'
}
if dp5[id-n] < dp5[id-1] {
dp5[id] = dp5[id-n] + c5
p5[id] = 'U'
} else {
dp5[id] = dp5[id-1] + c5
p5[id] = 'L'
}
}
}
}
last := size - 1
ans := dp2[last]
use2 := true
if dp5[last] < dp2[last] {
ans = dp5[last]
use2 = false
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
if zr != -1 && ans > 1 {
fmt.Fprintln(out, 1)
path := make([]byte, 0, 2*n-2)
for i := 0; i < zr; i++ {
path = append(path, 'D')
}
for j := 0; j < zc; j++ {
path = append(path, 'R')
}
for i := zr; i < n-1; i++ {
path = append(path, 'D')
}
for j := zc; j < n-1; j++ {
path = append(path, 'R')
}
fmt.Fprintln(out, string(path))
return
}
parent := p2
if !use2 {
parent = p5
}
path := make([]byte, 2*n-2)
i, j := n-1, n-1
k := len(path) - 1
for i > 0 || j > 0 {
if parent[i*n+j] == 'U' {
path[k] = 'D'
i--
} else {
path[k] = 'R'
j--
}
k--
}
fmt.Fprintln(out, ans)
fmt.Fprintln(out, string(path))
}