CF2222D Permutation Construction
题目描述
[Kirara Magic & PIKASONIC - Flora](https://www.youtube.com/watch?v=jXFfA9QsgJo)
给定一个长度为 $n$ 的整数数组 $a$。
对于一个排列 $p$,其一个逆序对 $(i, j)$ 的「值」被定义为 $\sum\limits_{k=i}^{j-1} a_k$。一个排列的美丽值等于其所有逆序对值的总和。
你需要构造一个长度为 $n$ 的排列 $p$,使其美丽值最大。
注:
∗ 在长度为 $n$ 的排列 $p$ 中,一个逆序对定义为一对下标 $(i, j)$,满足 $1 \leq i < j \leq n$ 且 $p_i > p_j$。例如,$p = [1, 4, 2, 3, 5]$ 时,$(2, 3)$ 是逆序对,但 $(1, 2)$ 不是(因为 $p_1 = 1 \leq p_2 = 4$),$(4, 2)$ 也不是(因为 $4 \not< 2$)。$p = [1]$ 时没有逆序对。
† 长度为 $n$ 的排列是 $1$ 到 $n$ 的所有整数组成的序列,每个数出现且只出现一次。例如,$[2, 3, 1, 5, 4]$ 是一个排列,但 $[1, 2, 2]$ 不是($2$ 出现了两次),$[1, 3, 4]$ 也不是排列($n=3$ 但出现了 $4$)。
输入格式
每组测试数据包含多组测试用例。第一行输入一个整数 $t$($1\le t\le 10^4$),表示测试用例数。
每组测试用例的第一行为一个整数 $n$($1\le n\le 2\times 10^5$),表示 $a$ 的长度。
第二行输入 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^9\leq a_i\leq 10^9$),表示数组 $a$ 的元素。
保证所有测试用例中 $n$ 的总和不超过 $2\times10^5$。
输出格式
对于每个测试用例,输出一行 $n$ 个整数,表示能使美丽值最大的排列 $p$。
如果有多组可行解,输出其中任意一种即可。
说明/提示
在第一个测试用例中,$p$ 只能是 $[1]$。
在第二个测试用例中,当 $p = [2, 1]$ 时,唯一的逆序对为 $(1, 2)$,其值为 $10^9$,排列的美丽值为 $10^9$。可以证明不存在美丽值更大的其它排列。
在第三个测试用例中,当 $p = [3, 2, 1]$ 时,所有逆序对为 $(1, 2), (1, 3), (2, 3)$,它们对应的值为 $1$、$3$、$2$,美丽值总和为 $1 + 3 + 2 = 6$。可以证明不存在美丽值更大的排列。
在第四个测试用例中,当 $p = [1, 2, 3, 4]$ 时,没有逆序对,所以美丽值为 $0$。可以证明不存在美丽值更大的排列。
在第五个测试用例中,$p = [3, 4, 1, 5, 2]$ 时,其美丽值为 $6$。
由 ChatGPT 5 翻译