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