atcoder#ABC281F. [ABC281F] Xor Minimization

[ABC281F] Xor Minimization

题目描述

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

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

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

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

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

例えば、3  5 = 6 3\ \oplus\ 5\ =\ 6 となります (二進表記すると: 011  101 = 110 011\ \oplus\ 101\ =\ 110 )。

输入格式

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

N N a1 a_1 \ldots aN a_N

输出格式

答えを出力せよ。

题目大意

给定一个长度为 NN 的序列 AA,求 $\min\limits^{\infty}_{i=0} \max\limits^N_{k=1} (A_k \oplus i)$,其中 \oplus 是按位异或操作。

3
12 18 11
16
10
0 0 0 0 0 0 0 0 0 0
0
5
324097321 555675086 304655177 991244276 9980291
805306368

提示

制約

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

Sample Explanation 1

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