← Home
For problem statement at 2000-2999/2100-2199/2100-2109/2107/problemE.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2100-2109/2107/verifierE.go ends with All 32 tests passed. can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	fmt.Fscan(reader, &t)

	S := make([]int64, 0, 200005)

	for tc := 0; tc < t; tc++ {
		var n, k int64
		fmt.Fscan(reader, &n, &k)

		maxWeight := n * (n - 1) * (n - 2) / 6

		if k > maxWeight+1 {
			fmt.Fprintln(writer, "No")
			continue
		}

		rem := k
		S = S[:0]

		for x := n - 1; x >= 2; x-- {
			cx := x * (x - 1) / 2
			if rem >= cx {
				S = append(S, x)
				rem -= cx
			}
		}

		if rem > 1 {
			fmt.Fprintln(writer, "No")
			continue
		}

		fmt.Fprintln(writer, "Yes")

		m := len(S)
		for i := 1; i <= m; i++ {
			fmt.Fprintln(writer, i, i+1)
		}

		nextNode := int64(m + 2)

		for i := 0; i <= m; i++ {
			var c int64
			if i == 0 {
				if m == 0 {
					c = n - 1
				} else {
					c = n - 1 - S[0]
				}
			} else if i == m {
				c = S[m-1] - 1
			} else {
				c = S[i-1] - S[i] - 1
			}

			parent := int64(i + 1)
			for j := int64(0); j < c; j++ {
				fmt.Fprintln(writer, parent, nextNode)
				nextNode++
			}
		}
	}
}