CF1992C.Gorilla and Permutation

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Gorilla and Permutation

题目描述

Gorilla 和 Noobish_Monk 找到了三个数 nnmmkkm<km < k)。他们决定构造一个长度为 nn 的排列^{\dagger}

对于这个排列,Noobish_Monk 提出了如下函数:g(i)g(i) 表示排列前 ii 个前缀中所有不大于 mm 的数的和。类似地,Gorilla 提出了函数 ff,其中 f(i)f(i) 表示排列前 ii 个前缀中所有不小于 kk 的数的和。长度为 ii 的前缀是指原数组的前 ii 个元素组成的子数组。

例如,如果 n=5n=5m=2m=2k=5k=5,排列为 [5,3,4,1,2][5, 3, 4, 1, 2],则:

  • f(1)=5f(1) = 5,因为 555 \ge 5g(1)=0g(1) = 0,因为 5>25 > 2
  • f(2)=5f(2) = 5,因为 3<53 < 5g(2)=0g(2) = 0,因为 3>23 > 2
  • f(3)=5f(3) = 5,因为 4<54 < 5g(3)=0g(3) = 0,因为 4>24 > 2
  • f(4)=5f(4) = 5,因为 1<51 < 5g(4)=1g(4) = 1,因为 121 \le 2
  • f(5)=5f(5) = 5,因为 2<52 < 5g(5)=1+2=3g(5) = 1 + 2 = 3,因为 222 \le 2

请你帮助他们找到一个排列,使得 (i=1nf(i)i=1ng(i))\left(\sum_{i=1}^n f(i) - \sum_{i=1}^n g(i)\right) 的值最大。

^{\dagger} 长度为 nn 的排列是指由 11nnnn 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(因为 22 出现了两次),[1,3,4][1,3,4] 也不是排列(因为 n=3n=3,但 44 出现在数组中)。

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例一行,包含三个整数 nnmmkk2n1052 \le n \le 10^51m<kn1 \le m < k \le n),分别表示要构造的排列的长度和两个整数。

保证所有测试用例中 nn 的总和不超过 21052 \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 翻译

样例

3
5 2 5
3 1 3
10 3 8
5 3 4 1 2
3 2 1
10 9 8 4 7 5 6 1 2 3

在线编程 IDE

建议全屏模式获得最佳体验