CF1809G Prediction

题目描述

有 $n$ 名参赛者参加一场锦标赛。第 $i$ 名参赛者的评分为 $a_i$。 锦标赛的组织方式如下。首先,组织者会给每位参赛者分配一个从 $1$ 到 $n$ 的编号,所有编号互不相同。设 $p_i$ 表示获得编号 $i$ 的参赛者。 接下来将进行 $n-1$ 场比赛。第一场比赛由 $p_1$ 和 $p_2$ 进行。第二场比赛由第一场的获胜者对阵 $p_3$。第三场比赛由第二场的获胜者对阵 $p_4$,以此类推——最后一场比赛由第 $n-2$ 场的获胜者对阵 $p_n$。 Monocarp 想要预测所有 $n-1$ 场比赛的结果(当然,他只会在参赛者编号分配完成后进行预测)。他已知:当两名评分分别为 $x$ 和 $y$ 的参赛者比赛,且 $|x-y|>k$ 时,评分较高者必胜。但如果 $|x-y| \le k$,则两人都有可能获胜。 在所有 $n!$ 种为参赛者分配编号的方式中,计算有多少种方式能让 Monocarp 能预测出所有 $n-1$ 场比赛的结果。由于答案可能很大,请输出答案对 $998244353$ 取模后的结果。

输入格式

第一行包含两个整数 $n$ 和 $k$($2 \le n \le 10^6$,$0 \le k \le 10^9$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_1 \le a_2 \le \dots \le a_n \le 10^9$)。

输出格式

输出一个整数,表示有多少种分配编号的方式能让 Monocarp 能预测出所有 $n-1$ 场比赛的结果。

说明/提示

在第一个样例中,任意一对选手的比赛结果都可以被 Monocarp 预测,因此所有 $24$ 种分配编号的方式都应计入答案。 在第二个样例中,符合条件的分配方式有 $[1, 3, 2]$、$[2, 3, 1]$、$[3, 1, 2]$ 和 $[3, 2, 1]$。 由 ChatGPT 4.1 翻译