在一款弹跳游戏中,游戏主人公可以在屏幕上按照固定的距离 L 在游戏屏幕上向左或者向右跳跃。
游戏屏幕可以简化为一个数轴,如果游戏主人公位于位置 X,则其向左跳跃 1 次可以到达 X-L 的位置,向右跳跃 1 次可以到达 X+L 的位置。
游戏中共有 N 枚金币,第 i 枚金币放置在位置 P_i 处,游戏主人公主只要跳跃到存在金币的位置,就能取走该位置的金币,该位置的金币被取走后,不会重新产生新的金币。
游戏主人公从最初位置 X 出发,可以向左或向右进行任意多次跳跃,跳跃距离固定为 L。
请你编程计算出:如果游戏主人公想要取走所有的金币,那么他的固定跳跃距离 L 的最大值是多少?
第一行包含两个整数 N, X,分别表示金币的数量、游戏主人公的初始位置。
第二行包含 N 个整数 P_1, P_2, \dots, P_N,表示每个金币的位置。
输出一个整数,表示在能取走所有金币的前提下,最大的跳跃距离 L。显而易见的是,L=1 的情况下,一定能取走所有位置的金币。
3 3 1 7 11
2
3 81 33 105 57
24
1 1 1000000000
999999999
设置跳跃距离为 L=2,可以实现目标。
对于 100\% 的数据,满足 1 \leq N \leq 10^5,1 \leq X \leq 10^9,1 \leq P_i \leq 10^9。
且保证,所有的 P_i 互不相同,X \neq P_i。
| 测试点编号 | 特殊性质 |
|---|---|
| 10\% 的数据 | N=1 |
| 另外 30\% 的数据 | X,P_i \le 1000 |