#L2715. 「BalkanOI 2018 Day2」Zalmoxis

「BalkanOI 2018 Day2」Zalmoxis

题目描述

翻译自 BalkanOI 2018 Day2 T3「Zalmoxis」

ZalPunch 是一种修改数列的方式:每次 ZalPunch 可以将数列中的任意一个正整数 xx 原地替换成两个 (x1)(x-1)

正确示范:

  • [1,1]ZalPunch[0,0,1][1, 1] \xrightarrow{ZalPunch} [0, 0, 1]
  • [1,23,3]ZalPunch[1,22,22,3][1, 23, 3] \xrightarrow{ZalPunch} [1, 22, 22, 3]

错误示范:

  • [1,3]ZalPunch[2,1,2][1, 3] \xrightarrow{ZalPunch} [2, 1, 2](第一个 22 不在原位)

从数列 [30][30] 开始,用 ZalPunch 修改该数列任意多次,所得到的所有数列都称为 ZalSequence(含数列 [30][30])。

给你一个有 NN 项的数列 SS,请在其中插入 KK 个数(不是使用 KK 次 ZalPunch),使之变成 ZalSequence。保证有解。


输入格式
第一行有两个整数 N,KN, K
第二行有 NN 个整数,表示数列 SS


输出格式
输出 N+KN+K 个整数,表示新数列。


样例 1

输入

5 1
29 27 25 25 28

输出

29 27 25 25 26 28

解释:
$[30] \to [29, 29] \to [29, 28, 28] \to [29, 27, 27, 28] \to [29, 27, 26, 26, 28] \to [29, 27, 25, 25, 26, 28]$


样例 2

输入

1 5
29

输出

29 28 27 26 25 25

解释:
$[30] \to [29, 29] \to [29, 28, 28] \to [29, 28, 27, 27] \to [29, 28, 27, 26, 26] \to [29, 28, 27, 26, 25, 25]$


数据范围与提示

  • 对于 30%30\% 的数据,K=1K=1
  • 对于所有数据,1N,K1061 \le N,K \le 10^61N+K1061 \le N + K \le 10^6