For problem statement at 1000-1999/1100-1199/1190-1199/1197/problemD.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1190-1199/1197/verifierD.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"io"
"os"
)
func nextInt(data []byte, idx *int) int64 {
n := len(data)
for *idx < n {
c := data[*idx]
if c != ' ' && c != '\n' && c != '\r' && c != '\t' {
break
}
*idx++
}
sign := int64(1)
if data[*idx] == '-' {
sign = -1
*idx++
}
var val int64
for *idx < n {
c := data[*idx]
if c < '0' || c > '9' {
break
}
val = val*10 + int64(c-'0')
*idx++
}
return sign * val
}
func main() {
data, _ := io.ReadAll(bufio.NewReaderSize(os.Stdin, 1<<20))
idx := 0
n := int(nextInt(data, &idx))
m := int(nextInt(data, &idx))
k := nextInt(data, &idx)
const INF int64 = 1 << 60
mins := make([]int64, m)
for i := 0; i < m; i++ {
mins[i] = INF
}
mins[0] = 0
var sum int64
var ans int64
for i := 1; i <= n; i++ {
sum += nextInt(data, &idx)
q := i / m
r := i % m
base := sum - k*int64(q)
best := int64(-1 << 60)
for y := 0; y < m; y++ {
if mins[y] == INF {
continue
}
val := base - mins[y]
if r > y {
val -= k
}
if val > best {
best = val
}
}
if best > ans {
ans = best
}
if base < mins[r] {
mins[r] = base
}
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
fmt.Fprint(out, ans)
out.Flush()
}