AT_arc118_b.[ARC118B] Village of M People

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

ARC 国有 NN 名国民,所有国民都是竞赛编程的玩家。根据每个人的竞赛编程实力,每位国民被分配了 1,2,…,K1, 2, \ldots, K 中的某一个段位。

在 ARC 国进行了一次人口普查,结果显示,段位 ii 的国民恰好有 AiA_i 人。国王希望将这份统计数据以更易理解的方式展示,于是决定以 MM 人的村庄为例,尽量保持各段位人数比例不变。

请你为 MM 人的村庄合理分配每个段位 ii 的村民人数 BiB_i,使得 max⁡i∣BiM−AiN∣\max_i\left|\frac{B_i}{M} - \frac{A_i}{N}\right| 尽可能小。需要满足以下条件:

  • 每个 BiB_i 是非负整数,且 ∑i=1KBi=M\sum_{i=1}^K B_i = M。

请输出任意一种满足条件的 B=(B1,B2,…,BK)B = (B_1, B_2, \ldots, B_K)。

输入格式

输入以如下格式从标准输入读入:

KK NN MM A1A_1 A2A_2 …\ldots AKA_K

输出格式

请输出满足条件的整数序列 BB,各元素用空格隔开,输出一行:

B1B_1 B2B_2 …\ldots BKB_K

如果存在多组满足条件的解,输出任意一组均可。

输入输出样例

  • 输入#1

    3 7 20
    1 2 4

    输出#1

    3 6 11
  • 输入#2

    3 3 100
    1 1 1

    输出#2

    34 33 33
  • 输入#3

    6 10006 10
    10000 3 2 1 0 0

    输出#3

    10 0 0 0 0 0
  • 输入#4

    7 78314 1000
    53515 10620 7271 3817 1910 956 225

    输出#4

    683 136 93 49 24 12 3

说明/提示

约束条件

  • 1≤K≤1051 \leq K \leq 10^5
  • 1≤N,M≤1091 \leq N, M \leq 10^9
  • 每个 AiA_i 是非负整数,且 ∑i=1KAi=N\sum_{i=1}^K A_i = N

样例解释 1

对于该输出,max⁡i∣BiM−AiN∣=max⁡(∣320−17∣,∣620−27∣,∣1120−47∣)=max⁡(1140,170,3140)=3140\max_i\left|\frac{B_i}{M} - \frac{A_i}{N}\right| = \max\left(\left|\frac{3}{20}-\frac{1}{7}\right|, \left|\frac{6}{20}-\frac{2}{7}\right|, \left|\frac{11}{20}-\frac{4}{7}\right|\right) = \max\left(\frac{1}{140}, \frac{1}{70}, \frac{3}{140}\right) = \frac{3}{140}。

样例解释 2

需要注意的是,B1=B2=B3=33B_1 = B_2 = B_3 = 33 不满足 B1+B2+B3=M=100B_1 + B_2 + B_3 = M = 100 的条件。在本例中,34 33 33、33 34 33 或 33 33 34 等输出都是正确答案。

由 ChatGPT 4.1 翻译

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

首页