归并排序与逆序对计数

TypeScript Hard sorting

任务 «归并排序与逆序对计数»

给定一个整数数组。需要使用归并排序将其按升序排序,并计算原始数组中的逆序对数量。逆序对是指满足 i < j 且 a[i] > a[j] 的一对索引 (i, j)。
输入数据:第一行包含数字 n(1 ≤ n ≤ 10^5),第二行包含 n 个整数,每个数的绝对值不超过 10^9。
输出数据:第一行为逆序对数量,第二行为排序后的数组,元素之间用空格分隔。

输入格式

首先是一个整数 n。然后是 n 个整数,用空格分隔。

输出格式

两行:第一行是逆序数(整数),第二行是用空格分隔的已排序数组。

示例

示例 1

输入
5 3 1 4 2 5
输出
3 1 2 3 4 5

示例 2

输入
4 4 3 2 1
输出
6 1 2 3 4

示例 3

输入
123
输出
0

示例 4

输入
0
输出
0
main.ts