#P1105. 【挑战题】移动奶牛
【挑战题】移动奶牛
题目描述
农夫约翰有N(2 <= N <= 1,500)头优秀的奶牛,编号为1到N。他有S(N <= S <= 1,000,000)个牛棚(编号为1到S),排列在一条长线上;每个牛棚与其相邻的牛棚之间的距离为1个单位。
奶牛们已经走到牛棚里休息了;第i头奶牛位于牛棚P_i。由于它们都不善社交,如果奶牛们彼此之间的牛棚太近,它们会变得很暴躁,所以约翰想要将奶牛们尽可能分散开来。
约翰希望确保N - 1对相邻奶牛之间的距离尽可能大,并且这些距离之间要相近。具体来说,约翰希望所有相邻奶牛之间的距离最多相差1,而且尽可能多的距离等于(S - 1) / (N - 1)(这里使用整数除法)。因此,对于四头奶牛和八个牛棚的情况,可以将奶牛放置在位置1、3、5、8或者1、3、6、8,但不能放置在1、2、4、7或者1、2、4、8。
请你帮助约翰以最高效的方式让奶牛们移动,计算奶牛们为了实现适当的间距所需的最小总移动距离。忽略奶牛进出牛棚所需的距离。
输入格式
* 第1行:两个用空格分隔的整数:N和S
* 第2行到第N+1行:第i+1行包含一个整数:P_i
输出格式
* 第1行:一个整数,表示奶牛们需要移动的最小总距离。该数字保证不超过1,000,000,000。
样例 #1
样例输入 #1
5 10
2
8
1
3
9
样例输出 #1
4
提示
奶牛位置 | A | B | C | . | . | . | . | D | E | . |
奶牛从牛棚2移动到3,从3移动到5,从9移动到10。总移动距离为1 + 2 + 1 = 4。奶牛最终的位置是在牛棚1、3、5、8和10。
初始牛棚 | A | B | C | . | . | . | . | D | E | . |
最终牛棚 | A | . | B | . | C | . | . | D | . | E |
移动距离 | 0 | . | 1 | . | 2 | . | . | 0 | . | 1 |