atcoder#ARC135C. [ARC135C] XOR to All

[ARC135C] XOR to All

配点 : 500500

問題文

非負整数列 A=(A1,,AN)A = (A_1, \ldots, A_N) が与えられます。 あなたは次の操作を、何度でも行うことができます(一度も行わなくてもよいです)。

  • 非負整数 x{A1,,AN}x\in \{A_1,\ldots,A_N\} をひとつ選ぶ。
  • すべての ii に対して、AiA_iAixA_i\oplus x に置き換える(\oplus はビット単位 XOR\mathrm{XOR} 演算を表します)。

操作後の i=1NAi\sum_{i=1}^N A_i としてありうる最大値を求めてください。

ビット単位 $\mathrm{XOR}$ 演算とは

非負整数 A,BA, B のビット単位 XOR\mathrm{XOR}ABA \oplus B は、以下のように定義されます。

  • ABA \oplus B を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。
3 \oplus 5 = 6$$$$011 \oplus 101 = 110

制約

  • 1N3×1051\leq N \leq 3\times 10^{5}
  • 0Ai<2300\leq A_i < 2^{30}

入力

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

NN

A1A_1 \ldots ANA_N

出力

操作後の i=1NAi\sum_{i=1}^N A_i としてありうる最大値を出力してください。

5
1 2 3 4 5
19

例えば次のように操作を行うことで、i=1NAi\sum_{i=1}^N A_i1919 にすることが可能です。

  • はじめ、数列 AA は次の状態です:(1,2,3,4,5)(1,2,3,4,5)
  • x=1x = 1 として操作を行うと、数列 AA は次の状態に変化します:(0,3,2,5,4)(0,3,2,5,4)
  • x=5x = 5 として操作を行うと、数列 AA は次の状態に変化します:(5,6,7,0,1)(5,6,7,0,1)。このとき i=1NAi=5+6+7+0+1=19\sum_{i=1}^N A_i = 5 + 6 + 7 + 0 + 1 = 19 です。
5
10 10 10 10 10
50

操作を一度も行わないことで、i=1NAi\sum_{i=1}^N A_i5050 にすることが可能です。

5
3 1 4 1 5
18