#CF2038A. 奖金项目

奖金项目

A. 奖金项目
每个测试的时间限制:2 秒
内存限制:512 兆字节


有一个由 nn 个软件工程师组成的团队,编号为 11nn
老板承诺,如果他们完成一个额外的项目,就给他们发奖金。
该项目总共需要 kk 单位的工作量。
老板承诺给第 ii 个工程师的奖金为 aia_i 布尔。

老板并不给工程师分配具体任务;期望每个工程师自愿完成一定整数单位的工作量。
只有当项目完成时,才会给整个团队发放奖金;也就是说,如果所有工程师自愿完成的工作总量 大于或等于 kk,则项目完成,奖金发放。

每个工程师能完成的工作量没有上限。
但所有工程师都看重自己的劳动:第 ii 个工程师认为 11 单位工作价值 bib_i 布尔。

如果项目完成(奖金发放),那么第 ii 个工程师完成 cc 单位工作的收益为:

si=aicbis_i = a_i - c \cdot b_i

如果项目未完成,工程师不会自愿做任何工作。

工程师们长期共事,因此他们都知道奖金将如何分配,也知道同事们对自己劳动的价值评估。
也就是说,所有 aia_ibib_i 对团队中的每个工程师都是已知的。

工程师们都很想拿到奖金,因此他们商定了以下工作分配流程:

11. 第 11 个工程师说:“我将完成 c1c_1 单位的工作”,其中 c1c_1 是一个非负整数;
22. 然后第 22 个工程师说:“我将完成 c2c_2 单位的工作”,其中 c2c_2 是一个非负整数;
33. 以此类推;
44. 最后第 nn 个工程师说:“我将完成 cnc_n 单位的工作”,其中 cnc_n 是一个非负整数。

每个工程师在说出 cic_i 时,都会选择使自己收益 sis_i 最大化的值。
如果预期收益为零,工程师仍然愿意工作(为了积累经验并帮助同事获得奖金)。
但是,如果预期收益为负(比如需要做太多工作,或者项目注定无法完成),那么该工程师将不工作(完成 00 单位工作)。

已知每个工程师都完全理性地行动,你的任务是求出每个工程师说出的 cic_i 的值。


输入
第一行包含两个整数 nnkk1n10001 \le n \le 10001k1061 \le k \le 10^6)—— 工程师人数和项目所需的工作总量。
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9),aia_i 是项目完成后给第 ii 个工程师的奖金。
第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_n1bi10001 \le b_i \le 1000),bib_i 是第 ii 个工程师的每单位工作成本。

输出
输出 nn 个整数 c1,c2,,cnc_1, c_2, \dots, c_n0cik0 \le c_i \le k)—— 每个工程师在最优策略下完成的工作量。
注意:答案唯一。


样例

样例输入 1

3 6
4 7 6
1 2 3

样例输出 1

1 3 2

样例输入 2

3 12
4 7 6
1 2 3

样例输出 2

0 0 0

样例输入 3

3 11
6 7 8
1 2 3

样例输出 3

6 3 2

提示
在第一个样例中,工程师们共同完成了项目并拿到了奖金,即使第三个工程师的收益为零。
在第二个样例中,项目所需工作量太大,工程师们选择不做任何工作更有利。