题目描述
给定正整数 N 和 K,找到满足以下条件的正整数序列 A=(A1,A2,…,AN) 的字典序最小排列:
- 对于所有 i(1≤i≤N),满足 lvertAi−irvertgeqK。
如果不存在这样的排列,则输出 -1
。
什么是字典序?
下面是一个确定不同序列 S 和 T 的字典序的算法。
在下面,我们用 Si 表示 S 的第 i 个元素。此外,如果 S 在字典上小于 T,我们将这个事实表示为 SltT;如果 S 在字典上大于 T,我们将这个事实表示为 SgtT。
- 令 L 是 S 和 T 的长度中较小的那个。对于每个 i=1,2,dots,L,我们检查 Si 和 Ti 是否相等。
- 如果存在 i 使得 SineqTi,令 j 是最小的这样的 i。然后,我们比较 Sj 和 Tj。如果 Sj 比 Tj 小(作为数字),我们确定 SltT 并停止;如果 Sj 比 Tj 大,我们确定 SgtT 并停止。
- 如果不存在 i 使得 SineqTi,我们比较 S 和 T 的长度。如果 S 比 T 短,我们确定 SltT 并停止;如果 S 比 T 长,我们确定 SgtT 并停止。
约束条件
- 2≤N≤3×105
- 1≤K≤N−1
输入
从标准输入读入输入数据,输入格式如下:
N K
输出
输出满足条件的字典序最小排列 A=(A1,A2,…,AN),输出格式如下:
A1 A2 … AN
如果不存在这样的排列,则输出 -1
。
示例 1
示例 1 输出
满足条件的排列有两种:(2,3,1) 和 (3,1,2)。例如,对于 (2,3,1),我们有:
- lvertA1−1rvert=1geqK
- lvertA2−2rvert=1geqK
- lvertA3−3rvert=2geqK
示例 2
示例 2 输出
示例 3
示例 3 输出