P12636 [UOI 2020] Array Reduction

题目背景

5s 512M

题目描述

给定一个包含 $n$ 个整数的数组 $a$。每次操作中,你可以选择一个位置 $i$($1 \leq i \leq n$),将 $a_i$ 减少 $k$,同时将所有其他元素 $a_j$($1 \leq j \leq n$ 且 $i \neq j$)增加 $t$。 求将数组中所有元素变为非正数(即小于或等于零)所需的最少操作次数。如果无法实现,则报告该情况。

输入格式

第一行包含三个整数 $n$、$k$、$t$($1 \leq n \leq 10^6$,$0 \leq k, t \leq 10^9$)——数组长度及操作参数。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^{18} \leq a_i \leq 10^9$)——数组元素的初始值。

输出格式

输出一个整数 $c$——将数组所有元素变为非正数所需的最少操作次数。如果无法实现,输出 $-1$。 如果可以实现,还需输出 $n$ 个整数 $cnt_i$($1 \leq i \leq n$),表示对第 $i$ 个元素执行的操作次数。注意必须满足 $\sum\limits_{i=1}^n cnt_i = c$。

说明/提示

- ($3$ 分)$t = 0$; - ($5$ 分)$1 \leq n \leq 300$,$0 \leq |a_i| \leq 300$,$0 \leq t \leq 10^6$; - ($8$ 分)$1 \leq n \leq 3000$,$0 \leq |a_i| \leq 3000$,$0 \leq t \leq 10^6$; - ($9$ 分)$1 \leq n \leq 10^3$,$1 \leq a_i \leq 10^9$,$0 \leq t \leq 10^6$; - ($5$ 分)$1 \leq n \leq 10^4$,$1 \leq a_i \leq 10^9$; - ($13$ 分)$1 \leq n \leq 10^5$,$1 \leq a_i \leq 10^9$; - ($8$ 分)$1 \leq a_i \leq 10^9$; - ($9$ 分)$1 \leq n \leq 10^3$,$0 \leq t \leq 10^6$; - ($5$ 分)$1 \leq n \leq 10^4$; - ($14$ 分)$1 \leq n \leq 10^5$; - ($21$ 分)无额外限制。 翻译由 DeepSeek V3 完成