Sequence Covering
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个长度为 n 的整数序列 a_1, a_2, \dots, a_n,以及一个整数 k,小苯可以进行任意次以下操作:

\hspace{23pt}\bullet 选择序列中的一个区间 [l, r],将该区间内的所有元素替换为这个区间的最大值。操作的成本为 (r - l)

\hspace{15pt}小苯想知道,在总成本不超过 k 的情况下,通过若干次操作,能够得到的字典序最大的序列是什么。

输入描述:

\hspace{15pt}每个测试文件包含多组测试数据。第一行输入一个整数 T\ (1 \leqq T \leqq 10^4) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行两个整数 n, k\ (1 \leqq n \leqq 2 \times 10^5, 0 \leqq k \leqq 10^9)
\hspace{15pt}第二行 n 个整数 a_1, a_2, \dots, a_n\ (-10^9 \leqq a_i \leqq 10^9)

\hspace{15pt}保证所有测试数据的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组数据,输出 n 个整数,表示在总成本不超过 k 的情况下,能够得到的字典序最大的序列。
示例1

输入

复制
2
5 3
3 1 4 1 4
4 0
2 3 1 4

输出

复制
4 4 4 4 4
2 3 1 4

说明

\hspace{15pt}第一组数据:
\hspace{25pt}先选择区间 [1,3] ,代价为 2a=\{4,4,4,1,4\},再选择区间 [4,5],代价为 1a=\{4,4,4,4,4\}

\hspace{15pt}第二组数据:
\hspace{25pt}无法执行操作,因此数组不会变。