Beautiful Array
Contest: Codeforces Round 816 (Div. 2)
Difficulty rating: 1000
Tags: constructive algorithms, greedy, math

Stanley defines the beauty of an array $$$a$$$ of length $$$n$$$, which contains non-negative integers, as follows: $$$$$$\sum\limits_{i = 1}^{n} \left \lfloor \frac{a_{i}}{k} \right \rfloor,$$$$$$ which means that we divide each element by $$$k$$$, round it down, and sum up the resulting values.

Stanley told Sam the integer $$$k$$$ and asked him to find an array $$$a$$$ of $$$n$$$ non-negative integers, such that the beauty is equal to $$$b$$$ and the sum of elements is equal to $$$s$$$. Help Sam — find any of the arrays satisfying the conditions above.

Input format:
Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 1000$$$). Description of the test cases follows.

The first line of each test case contains integers $$$n$$$, $$$k$$$, $$$b$$$, $$$s$$$ ($$$1 \leq n \leq 10^{5}$$$, $$$1 \leq k \leq 10^{9}$$$, $$$0 \leq b \leq 10^{9}$$$, $$$0 \leq s \leq 10^{18}$$$).

It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$10^5$$$.

Output format:
For each test case print $$$-1$$$ if such array $$$a$$$ does not exist. Otherwise print $$$n$$$ non-negative integers $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \leq a_{i} \leq 10^{18}$$$) — the answer.

Constraints:
Time limit: 1.0 s
Memory limit: 256.0 MB

Note:
In the first, the second, the fifth and the sixth test cases of the example it is possible to show that such array does not exist.

In the third testcase of the example $$$a = [0, 0, 19]$$$. The sum of elements in it is equal to 19, the beauty of it is equal to $$$\left ( \left \lfloor \frac{0}{6} \right \rfloor + \left \lfloor \frac{0}{6} \right \rfloor + \left \lfloor \frac{19}{6} \right \rfloor \right ) = (0 + 0 + 3) = 3$$$.

In the fourth testcase of the example $$$a = [0, 3, 3, 3, 29]$$$. The sum of elements in it is equal to $$$38$$$, the beauty of it is equal to $$$(0 + 0 + 0 + 0 + 7) = 7$$$.

Example input:
8
1 6 3 100
3 6 3 12
3 6 3 19
5 4 7 38
5 4 7 80
99978 1000000000 100000000 1000000000000000000
1 1 0 0
4 1000000000 1000000000 1000000000000000000

Example output:
-1
-1
0 0 19
0 3 3 3 29
-1
-1
0
0 0 0 1000000000000000000

Editorial:
To start with, the sum of the numbers in the array $$$s$$$ cannot be less, than $$$k \cdot b$$$ (where $$$k$$$ is the number by which we divide, and $$$b$$$ is beauty ($$$s \ge k \cdot b$$$))
It is important, that $$$s \le k \cdot b + (k - 1) \cdot n$$$. Let's assume that is not true. Consider the sum of divisible parts of numbers in the array: it obviously does not exceed $$$k \cdot b$$$, thus the sum of remainders is at least $$$(k - 1) \cdot n + 1$$$, which means, that at least one of the numbers' remainders is $$$k$$$, which is impossible by definition of the remainder.
That way we got the criteria for the existence of the answer: $$$k \cdot b \le s \le k \cdot b + (k - 1) \cdot n$$$.
If there does exist an answer, then we can use the following algorithm:
• Assign $$$k \cdot b$$$ to any of the $$$n$$$ cells of the array.
• Iterate over all the cells (including the cell from the previous item) and add $$$min(s - sum, k - 1)$$$ to the current cell, where $$$sum$$$ is the current sum of the elements.