#P1002. [2024 校赛] 欢迎加入实验室
[2024 校赛] 欢迎加入实验室
题目描述
本题题解已发表至 讨论区
计通楼即将举办一场激烈的编程竞赛,来选拔进入实验室的优秀学生。为了保证选手的公平性和参赛体验,实验室的学长学姐们决定对座位安排进行特殊设计:
每位参赛选手都有一个报名编号,从 到 ,并且教室内也恰好准备 个座位,编号同样从 到 。为了防止选手与熟悉的人相邻,座位编号 必须与其报名编号 的距离至少为 ,即 。
我们希望找到一种满足条件的座次安排,同时要求编号排列尽可能靠前(即字典序最小)。如果无法安排满足条件的座位,请输出 -1
,以表示本次竞赛的座次安排无法完成。
作为参赛选手,你需要完成这个挑战,帮助解决座次安排问题,确保每一位选手都能公平地入座。
什么是序列的字典序?
以下是判断不同序列 和 之间字典序的算法。
下面,设 表示 的第 个元素。如果 在字典序上小于 ,我们用 表示这种关系;如果 在字典序上大于 ,我们用 表示这种关系。
1. 设 为 和 长度中的较小值。对于每个 ,检查 和 是否相同。
2. 如果存在某个 使得 ,设 为最小的这样的 。然后,我们比较 和 。如果 小于 (按数值比较),则确定 并退出;如果 大于 ,则确定 并退出。
3. 如果没有 使得 ,则比较 和 的长度。如果 比 短,则确定 并退出;如果 比 长,则确定 并退出。
输入描述
输出描述
打印满足条件的从 到 的整数的字典序最小排列 ,格式如下:
如果没有满足条件的排列,打印 。
示例 1
输入
3 1
输出
2 3 1
说明
两个排列满足条件: 和 。以 为例,以下条件成立:
-
-
-
示例 2
输入
8 3
输出
4 5 6 7 8 1 2 3