#P15636. [2019年保加利亚国家队组队赛Senior]Chalga
[2019年保加利亚国家队组队赛Senior]Chalga
题目描述
不论一个人的音乐品味如何,在保加利亚,迟早都会碰上被称作“chalga”的东西。
尽管 Eli 十分反感那些歌手拼命想唱准一个音却又唱不准的“歌曲”,但她不得不承认,这首歌的 MV 至少在编排上有些创意:有 N 位女孩在 N 个平台上跳舞,每过一秒她们都会更换平台,从一个平台跳到另一个平台。
站在平台 i 上的女孩会跳到平台 Pi。这些数 P1, P2, ..., PN 构成一个排列——也就是说,每过一秒之后,每个平台上仍然恰好有一位舞者。
更神奇的是,这首歌的长度恰好是 K 秒,并且在歌曲结束时,每位舞者都回到了初始位置!这样电视台就可以无缝地反复播放同一首歌而看不出视频被切断。
Eli 记住了这段“编舞”的一部分,但遗憾的是她没有完整记住每个女孩跳去哪里。请你编写程序 Chalga,补全她记得的这个 1..N 的排列,使得经过 K 秒后,每位舞者都回到自己的起始位置。
输入格式
第一行两个整数 N 和 K,分别表示平台数量和歌曲时长(单位:秒)。
第二行 N 个整数 P1, P2, ..., PN,表示一个部分已知的排列。Eli 不记得的那些位置会用 0 表示。
输出格式
输出 P1, P2, ..., PN,其中把所有 0 替换成 1..N 中的某些数,使得最终形成一个排列,并且经过 K 秒后舞者重新回到自己的初始位置。若存在多组解,输出任意一组即可。
数据范围
1 ≤ N ≤ 500 ≤ Pi ≤ N1 ≤ K ≤ 1,000,000,000
样例输入
11 42
0 0 9 10 6 1 3 0 11 2 0
样例输出
7 4 9 10 6 1 3 8 11 2 5
样例解释
若将舞者编号为 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),则经过第 1 秒后她们的顺序为:
(6, 10, 7, 2, 11, 5, 1, 8, 3, 4, 9)
经过第 2 秒后为:
(5, 4, 1, 10, 9, 11, 6, 8, 7, 2, 3)
依此类推,到第 42 秒时又会回到:
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)。
注意,样例输出中的这个答案在第 21 秒时就已经回到了初始状态,因此在第 42 秒时当然也仍然在初始状态。
对于该输入,另一个可行答案是:
(5, 7, 9, 10, 6, 1, 3, 8, 11, 2, 4)。