C - Skip 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 300

問題文

数直線上に N 個の都市があり、i 番目の都市は座標 x_i にあります。

あなたの目的は、これら全ての都市を 1 度以上訪れることです。

あなたは、はじめに正整数 D を設定します。

その後、あなたは座標 X から出発し、以下の移動 1、移動 2 を好きなだけ行います。

  • 移動 1: 座標 y から座標 y + D に移動する
  • 移動 2: 座標 y から座標 y - D に移動する

全ての都市を 1 度以上訪れることのできる D の最大値を求めてください。

ここで、都市を訪れるとは、その都市のある座標に移動することです。

制約

  • 入力はすべて整数である
  • 1 \leq N \leq 10^5
  • 1 \leq X \leq 10^9
  • 1 \leq x_i \leq 10^9
  • x_i はすべて異なる
  • x_1, x_2, ..., x_N \neq X

入力

入力は以下の形式で標準入力から与えられる。

N X
x_1 x_2 ... x_N

出力

全ての都市を 1 度以上訪れることのできる D の最大値を出力せよ。


入力例 1

3 3
1 7 11

出力例 1

2

D = 2 と設定すれば次のように移動を行うことですべての都市を訪れることができ、これが最大です。

  • 移動 2 を行い、座標 1 に移動する
  • 移動 1 を行い、座標 3 に移動する
  • 移動 1 を行い、座標 5 に移動する
  • 移動 1 を行い、座標 7 に移動する
  • 移動 1 を行い、座標 9 に移動する
  • 移動 1 を行い、座標 11 に移動する

入力例 2

3 81
33 105 57

出力例 2

24

入力例 3

1 1
1000000000

出力例 3

999999999

Score : 300 points

Problem Statement

There are N cities on a number line. The i-th city is located at coordinate x_i.

Your objective is to visit all these cities at least once.

In order to do so, you will first set a positive integer D.

Then, you will depart from coordinate X and perform Move 1 and Move 2 below, as many times as you like:

  • Move 1: travel from coordinate y to coordinate y + D.
  • Move 2: travel from coordinate y to coordinate y - D.

Find the maximum value of D that enables you to visit all the cities.

Here, to visit a city is to travel to the coordinate where that city is located.

Constraints

  • All values in input are integers.
  • 1 \leq N \leq 10^5
  • 1 \leq X \leq 10^9
  • 1 \leq x_i \leq 10^9
  • x_i are all different.
  • x_1, x_2, ..., x_N \neq X

Input

Input is given from Standard Input in the following format:

N X
x_1 x_2 ... x_N

Output

Print the maximum value of D that enables you to visit all the cities.


Sample Input 1

3 3
1 7 11

Sample Output 1

2

Setting D = 2 enables you to visit all the cities as follows, and this is the maximum value of such D.

  • Perform Move 2 to travel to coordinate 1.
  • Perform Move 1 to travel to coordinate 3.
  • Perform Move 1 to travel to coordinate 5.
  • Perform Move 1 to travel to coordinate 7.
  • Perform Move 1 to travel to coordinate 9.
  • Perform Move 1 to travel to coordinate 11.

Sample Input 2

3 81
33 105 57

Sample Output 2

24

Sample Input 3

1 1
1000000000

Sample Output 3

999999999