U129781 「EZEC-4.5」逆序数

题目描述

我们说 $(i,j)$ 是排列 $p$ 的一个逆序对当且仅当 $i p_j $。 给定长度为 $n$ 的序列 $a$ ($a_i$ 为 $0$ 或互不相等的正整数),定义 $1$ 到 $n$ 的一个合法的排列 $p$ 需满足对于任意整数 $i\in [1,n]$,皆满足 $a_i(p_i-a_i)=0$。 **求 $1$ 到 $n$ 的所有合法的排列的逆序对数目之和对 $1000000007(10^9+7)$ 取模的值。**

输入格式

第一行一个整数,$n$。 第二行 $n$ 个整数,$a_i$。

输出格式

一行一个整数表示答案。

说明/提示

[大样例](https://www.luogu.com.cn/paste/2xhy0onw) ### 【样例解释】: 样例1:合法的排列有两个, - $\{1,2,4,3\}$,逆序对有 $(3,4)$ - $\{4,2,1,3\}$,逆序对有 $(1,2),(1,3),(1,4),(2,3)$ - 因此答案为 $1+4=5$。 ### 【数据范围】: - 对于 $20\%$ 的数据,$1\le n \le 8 $。 - 对于另外 $20\%$ 的数据,$a_i\ne 0$。 - 对于另外 $20\%$ 的数据,$a_i = 0$。 - 对于另外 $20\%$ 的数据,$1\le n \le 10^3 $。 - 对于 $100\%$ 的数据,$1\le n \le 10^5, a_i $ 为 $0$ 或互不相等的正整数