atcoder#ABC136E. [ABC136E] Max GCD

[ABC136E] Max GCD

配点 : 500500

問題文

長さ NN の整数列 A1,A2,,ANA_1, A_2, \cdots, A_N があります。

次の操作を 00 回以上 KK 回以下行うことができます。

  • iji \neq j なる 11 以上 NN 以下の 22 つの整数 i,ji, j を選び、AiA_i11 を足し、AjA_j1-1 を足す。この操作の後いずれかの要素が負になってもよい。

操作後の AA の全ての要素を割り切る正の整数として考えられる値の最大値を計算してください。ただし、正の整数 xx が整数 yy を割り切るとは、ある整数 zz を用いて y=xzy = xz と表せる場合を表します。

制約

  • 2N5002 \leq N \leq 500
  • 1Ai1061 \leq A_i \leq 10^6
  • 0K1090 \leq K \leq 10^9
  • 入力は全て整数である

入力

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

NN KK

A1A_1 A2A_2 \cdots AN1A_{N-1} ANA_{N}

出力

操作後の AA の全ての要素を割り切る正の整数として考えられる値の最大値を出力せよ。

2 3
8 20
7

例えば以下の操作で、77AA の全ての要素を割り切るようにできます。

  • i=2,j=1i = 2, j = 1 とする。AA(7,21)(7, 21) となる。

また、88 以上の整数が AA の全ての要素を割り切るようにはできません。

2 10
3 5
8

例えば、以下のように操作を 55 回行います。

  • i=2,j=1i = 2, j = 1 とする。AA(2,6)(2, 6) となる。
  • i=2,j=1i = 2, j = 1 とする。AA(1,7)(1, 7) となる。
  • i=2,j=1i = 2, j = 1 とする。AA(0,8)(0, 8) となる。
  • i=2,j=1i = 2, j = 1 とする。AA(1,9)(-1, 9) となる。
  • i=1,j=2i = 1, j = 2 とする。AA(0,8)(0, 8) となる。

このとき、0=8×0,8=8×10 = 8 \times 0, 8 = 8 \times 1 と表せるので、88AA の全ての要素を割り切ります。また、99 以上の整数が AA の全ての要素を割り切るようにはできません。

4 5
10 1 2 22
7
8 7
1 7 5 6 8 2 6 5
5