CF793A.Oleg and shares

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Oleg and shares

题目描述

银行客户 Oleg 每天都会查看股票价格。他关注的有 nn 种股票的价格。今天他观察到,每秒钟恰好有一个股票价格下降 kk 卢布(注意,每秒只能有一个价格变化,每次变化可能是不同的股票)。股票价格可以变成负数。Oleg 觉得这个过程很有趣,于是他问金融分析师 Igor,最少需要多少秒,所有 nn 个价格才能全部相等,或者这种情况是否根本不可能发生?Igor 现在很忙,于是请你帮忙回答这个问题。

输入格式

第一行包含两个整数 nnkk1n105, 1k1091 \leq n \leq 10^{5},\ 1 \leq k \leq 10^{9})——表示股票价格的个数以及每次价格下降的金额。

第二行包含 nn 个整数 a1,a2,...,ana_1, a_2, ..., a_n1ai1091 \leq a_i \leq 10^{9})——表示每支股票的初始价格。

输出格式

输出一行,表示让所有股票价格变得相等所需的最少秒数,如果无法实现输出“-1”。

说明/提示

以第一个样例为例。

假设第三个价格在第一秒下降,变为 1212 卢布,然后第一个价格下降,变为 99 卢布,第三个价格在第三秒再次下降,变为 99 卢布。在这种情况下,所有价格在 33 秒内变为 99 卢布。

也可以有其他方案,但这个方案所需的时间最少。因此答案是 33

在第二个样例中可以发现,第一和第二个价格的奇偶性不同,并且在整个操作过程中不会改变,因此价格永远无法相等。

第三个样例中,可以这样操作:首先第二个价格下降一次,然后第三个价格下降一次,再然后第四个价格下降一次。这样的操作一共进行 999999999999999999 次。由于每次只能有一个价格下降,整个过程总共需要 999999999×3=2999999997999999999 \times 3 = 2999999997 秒。可以证明,这是所需的最小时间。

由 ChatGPT 5 翻译

样例

3 3
12 9 15
3
2 2
10 9
-1
4 1
1 1000000000 1000000000 1000000000
2999999997

在线编程 IDE

建议全屏模式获得最佳体验