翻译
约翰有 N(2≤N≤1500)头奶牛和 S(N≤S≤1,000,000)个一字排开的牛棚,相邻牛棚间的距离恰好为 1。
奶牛们已经回棚休息,第 i 只奶牛现在待在牛棚 Pi。如果两只奶牛离得太近,会让奶牛们变得很暴躁。
所以约翰想给一些奶牛换一个棚,让她们之间的距离变得尽量大,距离的差值尽可能小(即尽可能接近等距)。
令 d=⌊N−1S−1⌋,约翰希望最终的奶牛的状态是:两只相邻奶牛间的距离与 d 之差不超过 1,而且让尽量多的间距等于 d。
因此,对于 4 只奶牛 8 个棚的情况,1,3,5,8 或 1,3,6,8 这样的安置情况是允许的,而 1,2,4,7 或 1,2,4,8 这样的情况是不允许的。
帮助约翰移动奶牛,让所有奶牛的移动距离之和最小,同时让最终的安置情况符合约翰心意。
输入格式
- 第 1 行:两个用空格分隔的整数:N 和 S。
- 第 2 到 N+1 行:第 i+1 行包含一个整数:Pi。
输出格式
- 第 1 行:一个整数,奶牛们需要移动的最小总距离。保证答案小于 109(因此可以使用
int 类型存储)。
样例解释
初始状态:
奶牛从牛棚 2 移动到 3,从 3 移动到 5,从 9 移动到 10。总移动距离是 1+2+1=4。奶牛们的最终位置在牛棚 1,3,5,8,10。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|
| 移动前 | A | B | C | . | . | . | . | D | E | . |
| 移动后 | A | . | B | . | C | . | . | D | . | E |
| 移动距离 | 0 | . | 1 | . | 2 | . | . | 0 | . | 1 |