For problem statement at 0-999/700-799/740-749/746/problemG.txt this is a correct solution, but verifier at 0-999/700-799/740-749/746/verifierG.go ends with All tests passed can you fix the verifier? package main
import (
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
v := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
v = v*10 + int(data[idx]-'0')
idx++
}
return v
}
n := nextInt()
t := nextInt()
k := nextInt()
a := make([]int, t+1)
for i := 1; i <= t; i++ {
a[i] = nextInt()
}
low, high := 0, 0
capc := make([]int, t+1)
for i := 1; i < t; i++ {
low++
if a[i] < a[i+1] {
capc[i] = a[i]
} else {
capc[i] = a[i+1]
}
high += capc[i]
}
need := n - 1 - k
if need < low || need > high {
os.Stdout.Write([]byte("-1"))
return
}
x := make([]int, t+1)
for i := 1; i < t; i++ {
x[i] = 1
}
extra := need - low
for i := 1; i < t && extra > 0; i++ {
add := capc[i] - 1
if add > extra {
add = extra
}
x[i] += add
extra -= add
}
levels := make([][]int, t+1)
id := 2
for i := 1; i <= t; i++ {
levels[i] = make([]int, a[i])
for j := 0; j < a[i]; j++ {
levels[i][j] = id
id++
}
}
out := make([]byte, 0, (n+1)*16)
out = strconv.AppendInt(out, int64(n), 10)
out = append(out, '\n')
addEdge := func(u, v int) {
out = strconv.AppendInt(out, int64(u), 10)
out = append(out, ' ')
out = strconv.AppendInt(out, int64(v), 10)
out = append(out, '\n')
}
for _, v := range levels[1] {
addEdge(1, v)
}
for i := 1; i < t; i++ {
parents := levels[i][:x[i]]
children := levels[i+1]
for j := 0; j < x[i]; j++ {
addEdge(parents[j], children[j])
}
for j := x[i]; j < len(children); j++ {
addEdge(parents[0], children[j])
}
}
os.Stdout.Write(out)
}