题目描述
すぬけくん得到了一个 (1, 2, ..., N) 的排列 P=(P1,P2,⋯,PN) 和一个整数 K。于是,すぬけくん不断交换 P 中相邻的两个元素,使得满足以下条件:
- 对于每个 1≤i≤N,满足 1≤j<i 且 Pj>Pi 的 j 的个数至多为 K。
在这里,すぬけくん以最小的操作次数达成了上述条件。
所有操作结束后,すぬけくん忘记了原来的排列。现在给定操作后的排列 P′,请你求出有多少种可能的原始排列 P,使得经过最小次数的相邻交换后可以得到 P′,并将答案对 998244353 取模。
输入格式
输入通过标准输入给出,格式如下:
N K P1′ P2′ ⋯ PN′
输出格式
请输出答案。
样例 1
输入
3 1
3 1 2
输出
2
样例 2
输入
4 3
4 3 2 1
输出
1
样例 3
输入
5 2
4 2 1 5 3
输出
3
说明/提示
限制条件
- 2≤N≤5000
- 1≤K≤N−1
- 1≤Pi′≤N
- Pi′=Pj′(i=j)
- 对于每个 1≤i≤N,满足 1≤j<i 且 Pj′>Pi′ 的 j 的个数至多为 K。
- 输入的所有值均为整数。
样例解释 1
作为 P 的可能有以下 2 种情况:
- P=(3,1,2):最小操作次数为 0,操作后的排列与 P′ 相同。
- P=(3,2,1):最小操作次数为 1,交换 P2 和 P3 后得到 P=(3,1,2),满足条件,操作后的排列与 P′ 相同。
由 ChatGPT 4.1 翻译