B - Village of M People 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 400

問題文

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

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

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

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

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

制約

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

入力

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

K N M
A_1 A_2 \ldots A_K

出力

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

B_1 B_2 \ldots B_K

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


入力例 1

3 7 20
1 2 4

出力例 1

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} となっています。


入力例 2

3 3 100
1 1 1

出力例 2

34 33 33

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

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


入力例 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

Score : 400 points

Problem Statement

The Republic of ARC has N citizens, all of whom play competitive programming. Each citizen is given a dan (grade) which is 1, 2, \ldots, or K, according to their skill.

A national census has revealed that there are exactly A_i citizens with dan i. To make this data easier to understand, the king has decided to describe the country as if it were a village of M people.

Set the number of people with dan i in the village, B_i, so that \max_i\left|\frac{B_i}{M} - \frac{A_i}{N}\right| is minimized, while satisfying the following:

  • each B_i is a non-negative integer, satisfying \sum_{i=1}^K B_i = M.

Print one such way to set B = (B_1, B_2, \ldots, B_K).

Constraints

  • 1\leq K\leq 10^5
  • 1\leq N, M\leq 10^9
  • Each A_i is a non-negative integer satisfying \sum_{i=1}^K A_i = N.

Input

Input is given from Standard Input in the following format:

K N M
A_1 A_2 \ldots A_K

Output

Print the elements in your integer sequence B satisfying the requirement in one line, with spaces in between.

B_1 B_2 \ldots B_K

If multiple sequences satisfy the requirement, any of them will be accepted.


Sample Input 1

3 7 20
1 2 4

Sample Output 1

3 6 11

In this output, we have \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 Input 2

3 3 100
1 1 1

Sample Output 2

34 33 33

Note that B_1 = B_2 = B_3 = 33 does not satisfy the requirement, since the sum must be M = 100.

In this sample, other than 34 33 33, printing 33 34 33 or 33 33 34 will also be accepted.


Sample Input 3

6 10006 10
10000 3 2 1 0 0

Sample Output 3

10 0 0 0 0 0

Sample Input 4

7 78314 1000
53515 10620 7271 3817 1910 956 225

Sample Output 4

683 136 93 49 24 12 3