2715 「BalkanOI 2018 Day2」Zalmoxis

内存限制:256 MB 时间限制:1000 ms

题目描述

翻译自 BalkanOI 2018 Day2 T3「Zalmoxis」

ZalPunch 是一种修改数列的方式,每次 ZalPunch 可以将数列中的任意一个正整数 $x$ 原地替换成两个 $(x-1)$。
正确示范:$[1, 1]\xrightarrow{ZalPunch}[0, 0, 1]$;
正确示范:$[1,23,3]\xrightarrow{ZalPunch}[1,22,22,3]$;
* 错误示范:$[1,3]\xrightarrow{ZalPunch}[2,1,2]$(第一个 2 不在原位)。

从数列 $[30]$ 开始,用 ZalPunch 修改该数列任意多次,所得到的所有数列都称为 ZalSequence(含数列 $[30]$)。
给你一个有 $N$ 项的数列 $S$,请在其中插入 $K$ 个数(不是使用 $K$ 次 ZalPunch),使之变成 ZalSequence。保证有解。

输入格式

第一行有两个整数 $N, K$。
第二行有 $N$ 个整数,表示数列 $S$。

输出格式

输出 $N+K$ 个整数,表示新数列。

样例 1

$[30] → [29, 29] →[29, 28, 28] →[29, 27, 27, 28] $ $→[29, 27, 26, 26, 28] $ $→ [29, 27, 25, 25, 26, 28]$

样例 2

$[30] → [29, 29] →[29, 28, 28] →[29, 28, 27, 27] $ $→[29, 28, 27, 26, 26] $ $→[29, 28, 27, 26, 25, 25]$

数据范围与提示

对于 $30\%$ 的数据,$K=1$。
对于所有数据,$1 ≤ N,K ≤ 10^6, $ $1 ≤ N + K ≤ 10^6$。

样例

样例输入 1

5 1 29 27 25 25 28

样例输出 1

29 27 25 25 26 28

样例输入 2

1 5 29

样例输出 2

29 28 27 26 25 25