CF1942A Farmer John's Challenge

题目描述

让我们称一个数组 $a$ 是有序的,当且仅当 $a_1 \leq a_2 \leq \ldots \leq a_{n-1} \leq a_n$。 你得到了 Farmer John 最喜欢的两个整数 $n$ 和 $k$。他向你发起挑战,要求你找到任意一个满足以下要求的数组 $a_1, a_2, \ldots, a_n$: - 对于每个 $1 \leq i \leq n$,都有 $1 \leq a_i \leq 10^9$; - 在数组 $a$ 的 $n$ 个循环移位中,恰好有 $k$ 个是有序的。$^\dagger$ 如果不存在这样的数组 $a$,输出 $-1$。 $^\dagger$ 数组 $a$ 的第 $x$ 个($1 \leq x \leq n$)循环移位是 $a_x, a_{x+1}, \ldots, a_n, a_1, a_2, \ldots, a_{x-1}$。如果 $c_{x,i}$ 表示 $a$ 的第 $x$ 个循环移位的第 $i$ 个元素,则恰好有 $k$ 个 $x$ 满足 $c_{x,1} \leq c_{x,2} \leq \ldots \leq c_{x,n}$。 例如,对于 $a = [1, 2, 3, 3]$,其循环移位如下: - $x = 1$:$[1, 2, 3, 3]$(有序); - $x = 2$:$[2, 3, 3, 1]$(无序); - $x = 3$:$[3, 3, 1, 2]$(无序); - $x = 4$:$[3, 1, 2, 3]$(无序)。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^3$)——表示测试用例的数量。 每个测试用例包含两个整数 $n$ 和 $k$($1 \leq k \leq n \leq 10^3$)——数组 $a$ 的长度以及要求有序的循环移位的数量。 保证所有测试用例中 $n$ 的总和不超过 $10^3$。

输出格式

对于每个测试用例,输出一行: - 如果存在满足条件的数组 $a$,输出 $n$ 个整数,表示 $a_1, a_2, \ldots, a_n$; - 否则,输出 $-1$。 如果有多组解,输出任意一组均可。

说明/提示

在第一个测试用例中,$a = [1, 1]$ 满足 $n = 2, k = 2$: $a$ 的两个循环移位分别为 $[a_1, a_2]$ 和 $[a_2, a_1]$,即 $[1, 1]$,均为有序。 在第二个测试用例中,$a = [69\,420, 69, 420]$ 满足 $n = 3, k = 1$: $a$ 的三个循环移位分别为 $[a_1, a_2, a_3]$,$[a_2, a_3, a_1]$,$[a_3, a_1, a_2]$,即 $[69\,420, 69, 420]$,$[69, 420, 69\,420]$,$[420, 69\,420, 69]$。 只有 $[69, 420, 69\,420]$ 是有序的。 由 ChatGPT 4.1 翻译