← Home
For problem statement at 1000-1999/1300-1399/1310-1319/1310/problemE.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1310-1319/1310/verifierE.go ends with # command-line-arguments
./1310E.go:160:12: declared and not used: same
failed to build reference: exit status 1
exit status 1 can you fix the verifier? package main

import (
	"fmt"
)

func main() {
	var n, k int
	if _, err := fmt.Scan(&n, &k); err != nil {
		return
	}

	if k == 1 || k == 2 {
		dp := make([]int, n+1)
		dp[0] = 1
		for i := 1; ; i++ {
			w := i
			if k == 2 {
				w = i * (i + 1) / 2
			}
			if w > n {
				break
			}
			for j := w; j <= n; j++ {
				dp[j] = (dp[j] + dp[j-w]) % 998244353
			}
		}
		ans := 0
		for j := 1; j <= n; j++ {
			ans = (ans + dp[j]) % 998244353
		}
		fmt.Println(ans)
		return
	}

	C := make([][]int, 4050)
	for i := 0; i < 4050; i++ {
		C[i] = make([]int, 2050)
		C[i][0] = 1
		for j := 1; j <= i && j < 2050; j++ {
			C[i][j] = C[i-1][j-1] + C[i-1][j]
			if C[i][j] > n {
				C[i][j] = n + 1
			}
		}
	}

	ans := 0
	var dfs func(last_g, i, u_sum, current_cost int)
	dfs = func(last_g, i, u_sum, current_cost int) {
		new_u_sum := u_sum
		new_cost := current_cost
		for g := 1; g <= last_g; g++ {
			new_u_sum += i
			if new_u_sum+k-3 >= 4050 || k-2 >= 2050 {
				break
			}
			new_cost += C[new_u_sum+k-3][k-2]
			if new_cost > n {
				break
			}
			ans = (ans + 1) % 998244353
			dfs(g, i+1, new_u_sum, new_cost)
		}
	}

	dfs(n, 1, 0, 0)
	fmt.Println(ans)
}