← Home
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)
}