← Home
For problem statement at 2000-2999/2100-2199/2140-2149/2145/problemD.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2140-2149/2145/verifierD.go ends with All 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()

	dp := make([][]bool, 31)
	parent := make([][]int, 31)
	for i := range dp {
		dp[i] = make([]bool, 436)
		parent[i] = make([]int, 436)
	}

	dp[0][0] = true

	for i := 1; i <= 30; i++ {
		for j := 0; j <= 435; j++ {
			for L := 1; L <= i; L++ {
				cost := L * (L - 1) / 2
				if j >= cost && dp[i-L][j-cost] {
					dp[i][j] = true
					parent[i][j] = L
					break
				}
			}
		}
	}

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

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

		S := n*(n-1)/2 - k

		if S < 0 || S > 435 || !dp[n][S] {
			fmt.Fprintln(writer, 0)
			continue
		}

		currN := n
		currS := S
		var lengths []int

		for currN > 0 {
			L := parent[currN][currS]
			lengths = append(lengths, L)
			currN -= L
			currS -= L * (L - 1) / 2
		}

		var ans []int
		currMax := n
		for _, L := range lengths {
			for i := 0; i < L; i++ {
				ans = append(ans, currMax-L+1+i)
			}
			currMax -= L
		}

		for i, val := range ans {
			if i > 0 {
				fmt.Fprint(writer, " ")
			}
			fmt.Fprint(writer, val)
		}
		fmt.Fprintln(writer)
	}
}