#P12444. [UOI 2020] Array Reduction

[UOI 2020] Array Reduction

题目描述

给定一个包含 nn 个整数的数组 aa。每次操作中,你可以选择一个位置 ii1in1 \leq i \leq n),将 aia_i 减少 kk,同时将所有其他元素 aja_j1jn1 \leq j \leq niji \neq j)增加 tt

求将数组中所有元素变为非正数(即小于或等于零)所需的最少操作次数。如果无法实现,则报告该情况。

输入格式

第一行包含三个整数 nnkktt1n1061 \leq n \leq 10^60k,t1090 \leq k, t \leq 10^9)——数组长度及操作参数。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1018ai109-10^{18} \leq a_i \leq 10^9)——数组元素的初始值。

输出格式

输出一个整数 cc——将数组所有元素变为非正数所需的最少操作次数。如果无法实现,输出 1-1

如果可以实现,还需输出 nn 个整数 cnticnt_i1in1 \leq i \leq n),表示对第 ii 个元素执行的操作次数。注意必须满足 i=1ncnti=c\sum\limits_{i=1}^n cnt_i = 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

说明/提示

  • 33 分)t=0t = 0
  • 55 分)1n3001 \leq n \leq 3000ai3000 \leq |a_i| \leq 3000t1060 \leq t \leq 10^6
  • 88 分)1n30001 \leq n \leq 30000ai30000 \leq |a_i| \leq 30000t1060 \leq t \leq 10^6
  • 99 分)1n1031 \leq n \leq 10^31ai1091 \leq a_i \leq 10^90t1060 \leq t \leq 10^6
  • 55 分)1n1041 \leq n \leq 10^41ai1091 \leq a_i \leq 10^9
  • 1313 分)1n1051 \leq n \leq 10^51ai1091 \leq a_i \leq 10^9
  • 88 分)1ai1091 \leq a_i \leq 10^9
  • 99 分)1n1031 \leq n \leq 10^30t1060 \leq t \leq 10^6
  • 55 分)1n1041 \leq n \leq 10^4
  • 1414 分)1n1051 \leq n \leq 10^5
  • 2121 分)无额外限制。