题目描述
给定一个包含 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
输入 #1
4 10 1
2 5 9 -4
输出 #1
4
1 1 2 0
输入输出样例 #2
输入 #2
5 1 100
-1000 -1000 10 -1000 -1000
输出 #2
10
0 0 10 0 0
输入输出样例 #3
输入 #3
2 1 1
1 0
输出 #3
-1
说明/提示
- (3 分)t=0;
- (5 分)1≤n≤300,0≤∣ai∣≤300,0≤t≤106;
- (8 分)1≤n≤3000,0≤∣ai∣≤3000,0≤t≤106;
- (9 分)1≤n≤103,1≤ai≤109,0≤t≤106;
- (5 分)1≤n≤104,1≤ai≤109;
- (13 分)1≤n≤105,1≤ai≤109;
- (8 分)1≤ai≤109;
- (9 分)1≤n≤103,0≤t≤106;
- (5 分)1≤n≤104;
- (14 分)1≤n≤105;
- (21 分)无额外限制。