CF938E Max History
题目描述
给定一个长度为 $n$ 的数组 $a$。我们定义 $f_{a}$ 如下:
- 初始时 $f_{a}=0$,$M=1$;
- 对于每个 $2 \leq i \leq n$,如果 $a_{M} < a_{i}$,则令 $f_{a}=f_{a}+a_{M}$,并将 $M=i$。
请计算数组 $a$ 的所有 $n!$ 个排列的 $f_{a}$ 之和,结果对 $10^{9}+7$ 取模。
注意:如果两个元素的下标不同,则认为它们是不同的,因此对于每个数组 $a$,恰好有 $n!$ 个排列。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 1\,000\,000$),表示数组 $a$ 的大小。
第二行包含 $n$ 个整数 $a_{1},a_{2},...,a_{n}$($1 \leq a_{i} \leq 10^{9}$)。
输出格式
输出一个整数,表示数组 $a$ 的所有 $n!$ 个排列的 $f_{a}$ 之和,对 $10^{9}+7$ 取模。
说明/提示
对于第二个样例,所有排列如下:
- $p=[1,2,3]$:$f_{a}$ 等于 $1$;
- $p=[1,3,2]$:$f_{a}$ 等于 $1$;
- $p=[2,1,3]$:$f_{a}$ 等于 $1$;
- $p=[2,3,1]$:$f_{a}$ 等于 $1$;
- $p=[3,1,2]$:$f_{a}$ 等于 $0$;
- $p=[3,2,1]$:$f_{a}$ 等于 $0$。
其中 $p$ 表示原数组 $a$ 的下标排列。$f_{a}$ 的总和为 $4$。
由 ChatGPT 4.1 翻译