atcoder#ARC118B. [ARC118B] Village of M People

[ARC118B] Village of M People

题目描述

ARC 国には N N 人の国民がおり、全国民が競技プログラミングのプレイヤーです。各国民にはその競技プログラミングの実力によって、1, 2, , K 1,\ 2,\ \ldots,\ K のいずれかひとつの段位が与えられています。

ARC 国では国勢調査が行われて、その結果、段位 i i の国民はちょうど Ai A_i 人居ることが分かりました。ARC 国の国王はこの統計データをより理解しやすい形にするために、なるべく各段位の人数の割合を保ったまま、ARC 国の状況を M M 人の村に例えることにしました。

M M 人の村における段位 i i の村民の人数 Bi B_i を上手く定めることで、$ \max_i\left|\frac{B_i}{M}\ -\ \frac{A_i}{N}\right| $ を最小にしてください。ただし、次が成り立つ必要があります。

  • Bi B_i は非負整数で、i=1K Bi = M \sum_{i=1}^K\ B_i\ =\ M を満たす

そのような B = (B1, B2, , BK) B\ =\ (B_1,\ B_2,\ \ldots,\ B_K) の定め方を、ひとつ出力してください。

输入格式

入力は以下の形式で標準入力から与えられます。

K K N N M M A1 A_1 A2 A_2 \ldots AK A_K

输出格式

条件を満たす整数列 B B の各要素を、空白で区切って 1 1 行で出力してください。

B1 B_1 B2 B_2 \ldots BK B_K

条件を満たす整数列が複数存在する場合は、どれを出力しても正解となります。

题目大意

原来有 KK 个数,他们的总和为 NN ,现在希望在这些数之间的比值变化不大的情况下调整至总和为 MM ,如果有多种答案,输出其中一种即可。

3 7 20
1 2 4
3 6 11
3 3 100
1 1 1
34 33 33
6 10006 10
10000 3 2 1 0 0
10 0 0 0 0 0
7 78314 1000
53515 10620 7271 3817 1910 956 225
683 136 93 49 24 12 3

提示

制約

  • 1 K 105 1\leq\ K\leq\ 10^5
  • 1 N, M 109 1\leq\ N,\ M\leq\ 10^9
  • Ai A_i は非負整数で、i=1K Ai = N \sum_{i=1}^K\ A_i\ =\ N を満たす

Sample Explanation 1

この出力において、$ \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} $ となっています。

Sample Explanation 2

和を M = 100 M\ =\ 100 にしなければならないので、B1 = B2 = B3 = 33 B_1\ =\ B_2\ =\ B_3\ =\ 33 では 条件が満たされないことに注意してください。 なおこの例においては、34 33 33 の他、33 34 3333 33 34 という出力も正解となります。