For problem statement at 2000-2999/2000-2099/2040-2049/2044/problemH.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2040-2049/2044/verifierH.go ends with All 52 tests passed. can you fix the verifier? package main
import (
"io"
"os"
"strconv"
)
type FastScanner struct {
data []byte
idx int
}
func (fs *FastScanner) NextInt() int {
for fs.idx < len(fs.data) {
b := fs.data[fs.idx]
if b >= '0' && b <= '9' {
break
}
fs.idx++
}
n := 0
for fs.idx < len(fs.data) {
b := fs.data[fs.idx]
if b < '0' || b > '9' {
break
}
n = n*10 + int(b-'0')
fs.idx++
}
return n
}
func main() {
data, _ := io.ReadAll(os.Stdin)
fs := FastScanner{data: data}
t := fs.NextInt()
out := make([]byte, 0, 1<<20)
for ; t > 0; t-- {
n := fs.NextInt()
q := fs.NextInt()
stride := n + 1
size := stride * stride
S := make([]int64, size)
SR := make([]int64, size)
SC := make([]int64, size)
for i := 1; i <= n; i++ {
rowBase := i * stride
prevBase := rowBase - stride
ii := int64(i)
var rowS, rowSR, rowSC int64
for j := 1; j <= n; j++ {
v := int64(fs.NextInt())
rowS += v
rowSR += ii * v
rowSC += int64(j) * v
pos := rowBase + j
up := prevBase + j
S[pos] = S[up] + rowS
SR[pos] = SR[up] + rowSR
SC[pos] = SC[up] + rowSC
}
}
for i := 0; i < q; i++ {
x1 := fs.NextInt()
y1 := fs.NextInt()
x2 := fs.NextInt()
y2 := fs.NextInt()
x0 := x1 - 1
y0 := y1 - 1
r2 := x2 * stride
r0 := x0 * stride
a := r2 + y2
b := r0 + y2
c := r2 + y0
d := r0 + y0
s := S[a] - S[b] - S[c] + S[d]
sr := SR[a] - SR[b] - SR[c] + SR[d]
sc := SC[a] - SC[b] - SC[c] + SC[d]
w := int64(y2 - y1 + 1)
ans := w*sr + sc - (w*int64(x1)+int64(y1)-1)*s
if i > 0 {
out = append(out, ' ')
}
out = strconv.AppendInt(out, ans, 10)
}
out = append(out, '\n')
}
os.Stdout.Write(out)
}