#ATagc054c. [AGC054C] Roughly Sorted

[AGC054C] Roughly Sorted

题目描述

すぬけくん得到了一个 (1, 2, ..., N)(1,\ 2,\ ...,\ N) 的排列 P=(P1,P2,,PN)P=(P_1,P_2,\cdots,P_N) 和一个整数 KK。于是,すぬけくん不断交换 PP 中相邻的两个元素,使得满足以下条件:

  • 对于每个 1iN1\leq i\leq N,满足 1j<i1\leq j<iPj>PiP_j>P_ijj 的个数至多为 KK

在这里,すぬけくん以最小的操作次数达成了上述条件。

所有操作结束后,すぬけくん忘记了原来的排列。现在给定操作后的排列 PP',请你求出有多少种可能的原始排列 PP,使得经过最小次数的相邻交换后可以得到 PP',并将答案对 998244353998244353 取模。

输入格式

输入通过标准输入给出,格式如下:

NN KK P1P'_1 P2P'_2 \cdots PNP'_N

输出格式

请输出答案。

样例 1

输入

3 1
3 1 2

输出

2

样例 2

输入

4 3
4 3 2 1

输出

1

样例 3

输入

5 2
4 2 1 5 3

输出

3

说明/提示

限制条件

  • 2N50002\leq N\leq 5000
  • 1KN11\leq K\leq N-1
  • 1PiN1\leq P'_i\leq N
  • PiPjP'_i\neq P'_jiji\neq j
  • 对于每个 1iN1\leq i\leq N,满足 1j<i1\leq j<iPj>PiP'_j>P'_ijj 的个数至多为 KK
  • 输入的所有值均为整数。

样例解释 1

作为 PP 的可能有以下 22 种情况:

  • P=(3,1,2)P=(3,1,2):最小操作次数为 00,操作后的排列与 PP' 相同。
  • P=(3,2,1)P=(3,2,1):最小操作次数为 11,交换 P2P_2P3P_3 后得到 P=(3,1,2)P=(3,1,2),满足条件,操作后的排列与 PP' 相同。

由 ChatGPT 4.1 翻译