For problem statement at 1000-1999/1400-1499/1410-1419/1416/problemB.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1410-1419/1416/verifierB.go ends with all tests passed can you fix the verifier? package main
import (
"bufio"
"io"
"os"
"strconv"
"strings"
)
type Op struct {
i int
j int
x int64
}
func main() {
data, _ := io.ReadAll(os.Stdin)
p := 0
nextInt := func() int64 {
for p < len(data) && (data[p] == ' ' || data[p] == '\n' || data[p] == '\r' || data[p] == '\t') {
p++
}
var v int64
for p < len(data) && data[p] >= '0' && data[p] <= '9' {
v = v*10 + int64(data[p]-'0')
p++
}
return v
}
t := int(nextInt())
var sb strings.Builder
for ; t > 0; t-- {
n := int(nextInt())
a := make([]int64, n+1)
var sum int64
for i := 1; i <= n; i++ {
a[i] = nextInt()
sum += a[i]
}
if sum%int64(n) != 0 {
sb.WriteString("-1\n")
continue
}
ops := make([]Op, 0, 3*n)
for i := 2; i <= n; i++ {
rem := a[i] % int64(i)
if rem != 0 {
need := int64(i) - rem
a[1] -= need
a[i] += need
ops = append(ops, Op{1, i, need})
}
x := a[i] / int64(i)
if x > 0 {
a[1] += x * int64(i)
a[i] = 0
ops = append(ops, Op{i, 1, x})
}
}
avg := sum / int64(n)
for i := 2; i <= n; i++ {
a[1] -= avg
a[i] += avg
ops = append(ops, Op{1, i, avg})
}
sb.WriteString(strconv.Itoa(len(ops)))
sb.WriteByte('\n')
for _, op := range ops {
sb.WriteString(strconv.Itoa(op.i))
sb.WriteByte(' ')
sb.WriteString(strconv.Itoa(op.j))
sb.WriteByte(' ')
sb.WriteString(strconv.FormatInt(op.x, 10))
sb.WriteByte('\n')
}
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
out.WriteString(sb.String())
out.Flush()
}