CF1992C Gorilla and Permutation
题目描述
Gorilla 和 Noobish\_Monk 找到了三个数 $n$、$m$ 和 $k$($m < k$)。他们决定构造一个长度为 $n$ 的排列$^{\dagger}$。
对于这个排列,Noobish\_Monk 提出了如下函数:$g(i)$ 表示排列前 $i$ 个前缀中所有不大于 $m$ 的数的和。类似地,Gorilla 提出了函数 $f$,其中 $f(i)$ 表示排列前 $i$ 个前缀中所有不小于 $k$ 的数的和。长度为 $i$ 的前缀是指原数组的前 $i$ 个元素组成的子数组。
例如,如果 $n=5$,$m=2$,$k=5$,排列为 $[5, 3, 4, 1, 2]$,则:
- $f(1) = 5$,因为 $5 \ge 5$;$g(1) = 0$,因为 $5 > 2$;
- $f(2) = 5$,因为 $3 < 5$;$g(2) = 0$,因为 $3 > 2$;
- $f(3) = 5$,因为 $4 < 5$;$g(3) = 0$,因为 $4 > 2$;
- $f(4) = 5$,因为 $1 < 5$;$g(4) = 1$,因为 $1 \le 2$;
- $f(5) = 5$,因为 $2 < 5$;$g(5) = 1 + 2 = 3$,因为 $2 \le 2$。
请你帮助他们找到一个排列,使得 $\left(\sum_{i=1}^n f(i) - \sum_{i=1}^n g(i)\right)$ 的值最大。
$^{\dagger}$ 长度为 $n$ 的排列是指由 $1$ 到 $n$ 的 $n$ 个不同整数按任意顺序组成的数组。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是排列(因为 $2$ 出现了两次),$[1,3,4]$ 也不是排列(因为 $n=3$,但 $4$ 出现在数组中)。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例一行,包含三个整数 $n$、$m$、$k$($2 \le n \le 10^5$;$1 \le m < k \le n$),分别表示要构造的排列的长度和两个整数。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个排列——即满足题目条件的数列。如果有多组解,输出任意一组即可。
说明/提示
在第一个示例中,$\left(\sum_{i=1}^n f(i) - \sum_{i=1}^n g(i)\right) = 5 \cdot 5 - (0 \cdot 3 + 1 + 3) = 25 - 4 = 21$。
由 ChatGPT 4.1 翻译