atcoder#ARC118B. [ARC118B] Village of M People

[ARC118B] Village of M People

配点 : 400400

問題文

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

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

MM 人の村における段位 ii の村民の人数 BiB_i を上手く定めることで、maxiBiMAiN\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) の定め方を、ひとつ出力してください。

制約

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

入力

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

KK NN MM

A1A_1 A2A_2 \ldots AKA_K

出力

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

B1B_1 B2B_2 \ldots BKB_K

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

3 7 20
1 2 4
3 6 11

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

3 3 100
1 1 1
34 33 33

和を M=100M = 100 にしなければならないので、B1=B2=B3=33B_1 = B_2 = B_3 = 33 では 条件が満たされないことに注意してください。

なおこの例においては、34 33 33 の他、33 34 3333 33 34 という出力も正解となります。

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