#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 |