atcoder#ABC281F. [ABC281F] Xor Minimization

[ABC281F] Xor Minimization

配点 : 500500

問題文

非負整数列 A=(a1,,aN)A=(a_1,\ldots,a_N) が与えられます。

AA に対して次の操作をちょうど 11 回行います。

  • 非負整数 xx を選ぶ。そして、i=1,,Ni=1,\ldots,N すべてに対し、aia_i の値を「aia_ixx のビット単位 xor」に置き換える。

操作後の AA に含まれる値の最大値を MM とします。MM の最小値を求めてください。

ビット単位 xor とは 非負整数 A, B のビット単位 xor 、A \oplus B は、以下のように定義されます。
  • A \oplus B を二進表記した際の 2^k (k \geq 0) の位の数は、A, B を二進表記した際の 2^k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3 \oplus 5 = 6 となります (二進表記すると: 011 \oplus 101 = 110)。

制約

  • 1N1.5×1051 \leq N \leq 1.5 \times 10^5
  • 0ai<2300 \leq a_i \lt 2^{30}
  • 入力はすべて整数

入力

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

NN

a1a_1 \ldots aNa_N

出力

答えを出力せよ。

3
12 18 11
16

x=2x=2 として操作をすると、操作後の数列は (122,182,112)=(14,16,9)(12 \oplus 2,18 \oplus 2, 11 \oplus 2) = (14,16,9) となり、最大値 MM1616 となります。 MM1616 より小さくすることは出来ないため、この値が答えです。

10
0 0 0 0 0 0 0 0 0 0
0
5
324097321 555675086 304655177 991244276 9980291
805306368