CF2038A.Bonus Project

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有 nn 名编号为 11 到 nn 的软件工程师。他们的老板承诺,如果他们完成一个额外项目,将给他们发放奖金。完成这个项目总共需要 kk 个单位的工作。给第 ii 名工程师的奖金是 aia_i 。第 ii 名工程师估计他们的一个单位的工作价值为 bib_i 。如果奖金发放了,那么第 ii 名工程师完成 cc 个单位的工作的收益 sis_i 定义为 si=ai−c⋅bis_i = a_i - c \cdot b_i。如果奖金不发放,工程师将不会自愿做任何工作。工程师们已经一起工作了很多年,所以他们知道奖金将如何分配,以及他们的同事对劳动的估值是多少。也就是说,团队中的每个工程师都知道所有的 aia_i 和 bib_i。工程师们渴望得到奖金,所以他们同意按照以下过程在他们之间分配工作:

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

每个工程师都会说出一个 cic_i 来最大化他们自己的收益 sis_i。如果预期的收益为零,工程师仍然会同意工作以获得经验并帮助他们的同事获得奖金。然而,如果出于某种原因预期的收益为负(工程师需要进行过量的工作,或者项目无法完成),那么该工程师将不会进行任何工作(完成0个单位的工作)。假设每个工程师的行为都是完美的,你的任务是找出每个工程师所说的数字 cic_i。

输入格式

第一行包含两个整数 nn 和 kk(1≤n≤10001 \leq n \leq 1000;1≤k≤1061 \leq k \leq 10^6),分别表示公司中的工程师人数和项目所需的工作单位数。第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \leq a_i \leq 10^9),其中 aia_i 表示如果项目完成,将支付给第 ii 位工程师的奖金。第三行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(1≤bi≤10001 \leq b_i \leq 1000),其中 bib_i 表示第 ii 位工程师的工作单位成本。

输出格式

第一行包含两个整数 nn 和 kk(1≤n≤10001 \leq n \leq 1000;1≤k≤1061 \leq k \leq 10^6),分别表示公司中的工程师人数和项目所需的工作单位数。第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \leq a_i \leq 10^9),其中 aia_i 表示如果项目完成,将支付给第 ii 位工程师的奖金。第三行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(1≤bi≤10001 \leq b_i \leq 1000),其中 bib_i 表示第 ii 位工程师的工作单位成本。

输入输出样例

  • 输入#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

说明/提示

在这两个例子中,工程师们分配了工作并获得了奖金,即使第三个工程师的收益为零。在第二个例子中,奖金项目需要太多工作量才能完成,所以工程师们根本不工作反而更有益。

输入解题思路,AI测评打分。不知道怎么写?

首页