AT_agc023_e [AGC023E] Inversions

题目描述

すぬけ君有一个长度为 $N$ 的整数序列 $A$。すぬけ君喜欢满足以下条件的 $ (1, 2, ..., N) $ 的排列 $P$: - 对于所有 $i$($1 \leq i \leq N$),都有 $P_i \leq A_i$。 すぬけ君对满足条件的所有排列的逆序数(※)感兴趣。请你帮すぬけ君计算所有满足条件的排列的逆序数之和。由于答案可能非常大,请输出对 $10^9 + 7$ 取模后的结果。

输入格式

输入通过标准输入按以下格式给出。 > $N$ $A_1$ $A_2$ $...$ $A_N$

输出格式

请输出满足条件的所有排列的逆序数之和对 $10^9 + 7$ 取模后的结果。

说明/提示

### 注释 一个长度为 $N$ 的数列 $Z$ 的逆序数是指满足 $Z_i > Z_j$ 的整数对 $(i, j)$($1 \leq i < j \leq N$)的个数。 ### 约束条件 - $1 \leq N \leq 2 \times 10^5$ - $1 \leq A_i \leq N$($1 \leq i \leq N$) - 输入均为整数。 ### 样例解释 1 满足条件的排列有 $(1,2,3)$、$(1,3,2)$、$(2,1,3)$、$(2,3,1)$ 共 $4$ 个。它们的逆序数分别为 $0$、$1$、$1$、$2$,因此总和为 $4$,输出 $4$。 ### 样例解释 2 满足条件的排列只有 $(4,2,5,1,6,3)$。该排列的逆序数为 $7$,因此输出 $7$。 ### 样例解释 3 没有任何满足条件的排列。 由 ChatGPT 4.1 翻译