逆序对的数量
给定一个序列 $ A = \{a_0, a_1, \dots, a_{n-1}\} $,称满足 $ a_i > a_j $ 且 $ i < j $ 的数对 $ (i, j) $ 为“逆序对”。逆序对的数量等价于冒泡排序中交换操作的次数。
由于直接使用冒泡排序计算逆序对数量会导致时间复杂度过高($ O(n^2) $),我们需要设计一个更高效的算法来解决此问题。
输入
第一行给出整数 $ n $,表示序列 $ A $ 的元素个数。
第二行给出 $ n $ 个整数 $ a_0, a_1, \dots, a_{n-1} $,表示序列 $ A $ 的元素,以空格分隔。
输出
输出一行,表示序列 $ A $ 中逆序对的数量。
约束条件
- $ 1 \leq n \leq 200,000 $
- $ 0 \leq a_i \leq 10^9 $
- 序列中的元素 $ a_i $ 各不相同。
样例输入 1
5
3 5 2 1 4
样例输出 1
6
样例输入 2
3
3 1 2
样例输出 2
2