For problem statement at 1000-1999/1000-1099/1010-1019/1016/problemB.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1010-1019/1016/verifierB.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"io"
"os"
)
type FastScanner struct {
data []byte
idx int
n int
}
func NewFastScanner() *FastScanner {
data, _ := io.ReadAll(os.Stdin)
return &FastScanner{data: data, n: len(data)}
}
func (fs *FastScanner) nextInt() int {
for fs.idx < fs.n && (fs.data[fs.idx] == ' ' || fs.data[fs.idx] == '\n' || fs.data[fs.idx] == '\r' || fs.data[fs.idx] == '\t') {
fs.idx++
}
sign := 1
if fs.idx < fs.n && fs.data[fs.idx] == '-' {
sign = -1
fs.idx++
}
val := 0
for fs.idx < fs.n && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
val = val*10 + int(fs.data[fs.idx]-'0')
fs.idx++
}
return val * sign
}
func (fs *FastScanner) nextString() string {
for fs.idx < fs.n && (fs.data[fs.idx] == ' ' || fs.data[fs.idx] == '\n' || fs.data[fs.idx] == '\r' || fs.data[fs.idx] == '\t') {
fs.idx++
}
start := fs.idx
for fs.idx < fs.n && fs.data[fs.idx] != ' ' && fs.data[fs.idx] != '\n' && fs.data[fs.idx] != '\r' && fs.data[fs.idx] != '\t' {
fs.idx++
}
return string(fs.data[start:fs.idx])
}
func main() {
fs := NewFastScanner()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
n := fs.nextInt()
m := fs.nextInt()
q := fs.nextInt()
s := fs.nextString()
t := fs.nextString()
good := make([]int, n+1)
for i := 1; i+m-1 <= n; i++ {
match := true
for j := 0; j < m; j++ {
if s[i-1+j] != t[j] {
match = false
break
}
}
if match {
good[i] = 1
}
}
pref := make([]int, n+1)
for i := 1; i <= n; i++ {
pref[i] = pref[i-1] + good[i]
}
buf := make([]byte, 0, q*4)
writeInt := func(x int) {
if x == 0 {
buf = append(buf, '0', '\n')
return
}
start := len(buf)
for x > 0 {
buf = append(buf, byte('0'+x%10))
x /= 10
}
for l, r := start, len(buf)-1; l < r; l, r = l+1, r-1 {
buf[l], buf[r] = buf[r], buf[l]
}
buf = append(buf, '\n')
}
for ; q > 0; q-- {
l := fs.nextInt()
r := fs.nextInt()
end := r - m + 1
if end < l {
writeInt(0)
} else {
writeInt(pref[end] - pref[l-1])
}
}
out.Write(buf)
}