#P14719. [Bulgarian2023春季赛]work

[Bulgarian2023春季赛]work

题目描述

一家软件公司有 kk 名程序员。他们需要参与 nn 个项目,第 ii 个项目的难度为 xix_i

每名程序员最多只能参与 一个 项目,因此公司希望安排每个项目分配到的程序员数量为 yiy_i,其中对每个 ii 都有 yiy_i 为非负整数,并满足:

y1+y2++yn=ky_1+y_2+\cdots+y_n=k

不过,程序员们的合作效率遵循“人多未必力量大”的规律,因此在项目 ii 上,若分配了 yiy_i 名程序员,则该项目产生的生产力仅为:

yixi\frac{\sqrt{y_i}}{x_i}

公司希望对程序员进行分配,使得所有项目的总生产力最大。

输入格式

第一行包含两个数 n,kn,k

第二行包含 nn 个数 x1,x2,,xnx_1,x_2,\ldots,x_n,表示各项目难度。

输出格式

输出一行 nn 个整数 y1,y2,,yny_1,y_2,\ldots,y_n,表示一种使总生产力最大的分配方案。

如果你的方案得到的总生产力与标准答案的差值不超过 101010^{-10},则该答案会被判为正确。

数据范围

  • 1n1061 \le n \le 10^6
  • 1k10121 \le k \le 10^{12}
  • 1xi1061 \le x_i \le 10^6
  • xix_i 为一个小数,且小数点后最多有 66

子任务

子任务 分值 nn \le kk \le
1 5 1010 1010
2 10510^5
3 10210^2 10210^2
4 10510^5
5 10410^4 10410^4
6 10510^5
7 20 10610^6
8 10510^5 101210^{12}
9 30 10610^6

只有当某个子任务的全部测试点均通过时,才能获得该子任务的分数。

样例

输入

3 3
1.2 2.5 3.7

输出

2 1 0