For problem statement at 0-999/0-99/60-69/62/problemB.txt this is a correct solution, but verifier at 0-999/0-99/60-69/62/verifierB.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
buf := make([]byte, 1024*1024)
scanner.Buffer(buf, 1024*1024)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
if !scanner.Scan() {
return
}
if !scanner.Scan() {
return
}
s := scanner.Text()
pos := make([][]int, 26)
for i := 0; i < len(s); i++ {
idx := s[i] - 'a'
pos[idx] = append(pos[idx], i+1)
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 0; i < n; i++ {
if !scanner.Scan() {
break
}
c := scanner.Text()
cLen := len(c)
var F int64 = 0
for j := 0; j < cLen; j++ {
idx := c[j] - 'a'
if len(pos[idx]) == 0 {
F += int64(cLen)
} else {
target := j + 1
p := pos[idx]
l, r := 0, len(p)-1
best := -1
for l <= r {
mid := (l + r) / 2
if p[mid] >= target {
best = mid
r = mid - 1
} else {
l = mid + 1
}
}
minDist := int64(1 << 60)
if best != -1 {
minDist = int64(p[best] - target)
}
if best > 0 {
dist := int64(target - p[best-1])
if dist < minDist {
minDist = dist
}
}
if best == -1 {
minDist = int64(target - p[len(p)-1])
}
F += minDist
}
}
fmt.Fprintln(out, F)
}
}