P4810.第3题-数组字典序优化与尾随零
题目内容
小红拿到了一个长度为 n 的数组 {a1,a2,…,an}。她可以进行最多 k 次如下操作:
- 步骤一:选择两个下标的元素 ai 和 aj(即满足 i=j),且 ai 为偶数;
- 步骤二:将 ai 除以 2,同时将 aj 乘以 2。
经过最多 k 次操作后,小红希望数组的字典序尽可能小。由于操作后数组元素可能非常大,良心的小红不需要你写高精度进行计算,只需要你输出操作结束后数组中每个元素末尾有多少个 0(十进制表示下的尾随零)即可。
从数组的第一个元素开始逐个比较,直到找到第一个不同的位置,比较这个位置元素的大小,较小的数组的字典序也较小。
输入描述
在一行上输入两个整数 n 和 k(1≤n≤105,1≤k≤109),分别表示数组长度和最多操作次数;
在第二行输入 n 个整数 a1,a2,…,an(1≤ai≤109),表示数组的初始元素。
输出描述
在一行上输出 n 个整数,第 i 个整数表示操作结束后第 i 个元素末尾 0 的数量。
样例1
输入
5 1
1 2 3 4 5
输出
0 0 0 0 1
说明
在上述样例中,初始数组为 {1,2,3,4,5}。
- 小红进行一次操作,选择 ai=2 和 aj=5;
- 将 2 除以 2 得到 1,将 5 乘以 2 得到 10;
最终数组为 {1,1,3,4,10},各元素末尾 0 的个数依次为 {0,0,0,0,1}。
样例2
输入
3 20
1024 5 125
输出
0 0 3