题目描述
给定一个包含 n 个整数的数组 a。每次操作中,你可以选择一个位置 i(1≤i≤n),将 ai 减少 k,同时将所有其他元素 aj(1≤j≤n 且 i=j)增加 t。
求将数组中所有元素变为非正数(即小于或等于零)所需的最少操作次数。如果无法实现,则报告该情况。
输入格式
第一行包含三个整数 n、k、t(1≤n≤106,0≤k,t≤109)——数组长度及操作参数。
第二行包含 n 个整数 a1,a2,…,an(−1018≤ai≤109)——数组元素的初始值。
输出格式
输出一个整数 c——将数组所有元素变为非正数所需的最少操作次数。如果无法实现,输出 −1。
如果可以实现,还需输出 n 个整数 cnti(1≤i≤n),表示对第 i 个元素执行的操作次数。注意必须满足 i=1∑ncnti=c。
样例 1 输入
4 10 1
2 5 9 -4
样例 1 输出
4
1 1 2 0
样例 2 输入
5 1 100
-1000 -1000 10 -1000 -1000
样例 2 输出
10
0 0 10 0 0
样例 3 输入
2 1 1
1 0
样例 3 输出
-1
数据范围
对于所有数据,1≤n≤106,0≤k,t≤109,−1018≤ai≤109。
- 子任务 1(5 分)t=0;
- 子任务 2(5 分)1≤n≤300,∣ai∣≤300,0≤t≤106;
- 子任务 3(10 分)1≤n≤3000,∣ai∣≤3000,0≤t≤106;
- 子任务 4(10 分)1≤n≤103,ai≥1,0≤t≤106;
- 子任务 5(5 分)1≤n≤104,ai≥1;
- 子任务 6(10 分)1≤n≤105,ai≥1;
- 子任务 7(10 分)ai≥1;
- 子任务 8(10 分)1≤n≤103,0≤t≤106;
- 子任务 9(5 分)1≤n≤104;
- 子任务 10(15 分)1≤n≤105;
- 子任务 11(15 分)无额外限制。