#P15636. [2019年保加利亚国家队组队赛Senior]Chalga

    ID: 14848 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 6 上传者: 标签>图论动态规划算法基础构造数学CF2100

[2019年保加利亚国家队组队赛Senior]Chalga

题目描述

不论一个人的音乐品味如何,在保加利亚,迟早都会碰上被称作“chalga”的东西。

尽管 Eli 十分反感那些歌手拼命想唱准一个音却又唱不准的“歌曲”,但她不得不承认,这首歌的 MV 至少在编排上有些创意:有 N 位女孩在 N 个平台上跳舞,每过一秒她们都会更换平台,从一个平台跳到另一个平台。

站在平台 i 上的女孩会跳到平台 Pi。这些数 P1, P2, ..., PN 构成一个排列——也就是说,每过一秒之后,每个平台上仍然恰好有一位舞者。

更神奇的是,这首歌的长度恰好是 K 秒,并且在歌曲结束时,每位舞者都回到了初始位置!这样电视台就可以无缝地反复播放同一首歌而看不出视频被切断。

Eli 记住了这段“编舞”的一部分,但遗憾的是她没有完整记住每个女孩跳去哪里。请你编写程序 Chalga,补全她记得的这个 1..N 的排列,使得经过 K 秒后,每位舞者都回到自己的起始位置。

输入格式

第一行两个整数 NK,分别表示平台数量和歌曲时长(单位:秒)。
第二行 N 个整数 P1, P2, ..., PN,表示一个部分已知的排列。Eli 不记得的那些位置会用 0 表示。

输出格式

输出 P1, P2, ..., PN,其中把所有 0 替换成 1..N 中的某些数,使得最终形成一个排列,并且经过 K 秒后舞者重新回到自己的初始位置。若存在多组解,输出任意一组即可。

数据范围

  • 1 ≤ N ≤ 50
  • 0 ≤ Pi ≤ N
  • 1 ≤ 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)