#ATarc144c. [ARC144C] K Derangement

[ARC144C] K Derangement

题目描述

给定正整数 N, KN,\ K。请你从 11NN 的整数中构造一个排列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N),使其满足以下条件,并输出字典序最小的一个。

  • 对于任意 ii1iN1 \leq i \leq N),都有 AiiK|A_i - i| \geq K

如果不存在满足条件的排列,请输出 -1

什么是数列的字典序?
判断两个不同数列 SSTT 的大小的方法如下:

SS 的第 ii 个元素为 SiS_i。若 SS 字典序小于 TT,记作 S<TS < T,大于则记作 S>TS > T

  1. SSTT 中较短的那个数列的长度为 LL,依次比较 i=1,2,,Li=1,2,\dots,LSiS_iTiT_i 是否相等。
  2. 如果存在 SiTiS_i \neq T_iii,取最小的这样的 iijj,比较 SjS_jTjT_j,若 Sj<TjS_j < T_j,则 S<TS < T,否则 S>TS > T,算法结束。
  3. 如果所有 ii 都有 Si=TiS_i = T_i,则比较 SSTT 的长度,若 SS 更短,则 S<TS < T,否则 S>TS > T,算法结束。

输入格式

输入为一行,包含两个整数:

NN KK

输出格式

输出满足条件的排列 AA 中字典序最小的一个,格式如下:

A1A_1 A2A_2 \ldots ANA_N

如果不存在这样的排列,输出 -1

样例 1

输入

3 1

输出

2 3 1

样例 2

输入

8 3

输出

4 5 6 7 8 1 2 3

样例 3

输入

8 6

输出

-1

说明/提示

数据范围

  • 2N3×1052 \leq N \leq 3 \times 10^5
  • 1KN11 \leq K \leq N - 1

样例解释 1

满足条件的排列有 (2,3,1)(2, 3, 1)(3,1,2)(3, 1, 2) 两个。例如 (2,3,1)(2, 3, 1) 满足:

  • A11=1K|A_1 - 1| = 1 \geq K
  • A22=1K|A_2 - 2| = 1 \geq K
  • A33=2K|A_3 - 3| = 2 \geq K

因此满足条件。

由 ChatGPT 4.1 翻译