题目描述
对于 (1,2,…,N) 的一个排列 Q=(Q1,Q2,…,QN),定义如下的值为 f(Q):
对于所有满足 1≤i<j≤n 且 Qi>Qj 的整数对 (i,j),将所有 j−i 的和记为 f(Q)。
给定 (1,2,…,N) 的一个排列 P=(P1,P2,…,PN)。
你需要重复以下操作 M 次:
- 选择满足 1≤i≤j≤N 的一组整数 (i,j)。将 Pi,Pi+1,…,Pj 反转。更具体地说,将 Pi,Pi+1,…,Pj 的值同时替换为 Pj,Pj−1,…,Pi。
操作的选择方式共有 (2N(N+1))M 种。对于所有这些操作结束后的 f(P),你需要求它们的总和,并对 998244353 取模。
输入格式
输入以如下格式从标准输入给出。
N M P1 P2 … PN
输出格式
输出一行,表示答案。
样例 1
输入
2 1
1 2
输出
1
样例 2
输入
3 2
3 2 1
输出
90
样例 3
输入
10 2023
5 8 1 9 3 10 4 7 2 6
输出
543960046
说明/提示
限制条件
- 1≤N,M≤2×105
- (P1,P2,…,PN) 是 (1,2,…,N) 的一个排列。
样例解释 1
所有可能的操作如下,共有 3 种:
- 选择 (i,j)=(1,1)。此时 P=(1,2),f(P)=0。
- 选择 (i,j)=(1,2)。此时 P=(2,1),f(P)=1。
- 选择 (i,j)=(2,2)。此时 P=(1,2),f(P)=0。
因此,答案为 0+1+0=1。
由 ChatGPT 4.1 翻译