CF2140F Sum Minimisation

题目描述

给定一个长度为 $n$ 的数组 $a$,你可以对数组 $a$ 执行如下操作任意次(包括零次): 1. 任意选择 $k$ 个不同的下标组成集合 $S = \{i_1, i_2, \ldots, i_k\}$,其中 $1 \le i_j \le n$,对于所有 $1 \le j \le k$。 2. 计算 $x = a_{i_1} + a_{i_2} + \cdots + a_{i_k}$,然后设 $y = x - \left\lfloor \frac{x}{k} \right\rfloor \cdot k$。 3. 在选中的元素 $a_{i_1}, \ldots, a_{i_k}$ 中,对其中 $y$ 个最小的值各减少 $1$。 - 如果两个元素值不同($a_i \ne a_j$),值较小者为更小的元素。 - 如果两个元素值相同($a_i = a_j$),下标较小者为更小的元素。 - 如果 $y=0$,则不减少任何元素。 你的任务是,在任意次数操作之后,求数组 $a$ 所有元素之和能达到的最小可能值,或者判断是否能够无限减少。

输入格式

每个测试点包含多组测试数据。第一行给出测试用例数 $t$($1 \le t \le 10^4$)。 接下来每组测试数据: 第一行包含一个整数 $n$($1 \le n \le 10^6$),表示数组 $a$ 的长度。 第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($1 \le a_i \le 10^9$),表示数组 $a$ 的元素。 保证所有测试数据中 $n$ 的总和不超过 $10^6$。

输出格式

对于每个测试用例,输出一行,表示执行上述操作若干次后,数组 $a$ 的元素和可以达到的最小值。 如果数组元素和能被无限减少,输出 $-1$。

说明/提示

在第一个测试点中,我们只能对整个数组操作一次,最终可以得到 $a = [2,0]$,之后无法再进行操作使其和减少。 在第二个测试点中,无法通过任何操作减少和,因此答案为数组元素之和。 在第三个测试点中,存在一系列操作可以使数组总和无限减少。 由 ChatGPT 5 翻译