配点 : 500 点
問題文
非負整数列 A=(A1,…,AN) が与えられます。
あなたは次の操作を、何度でも行うことができます(一度も行わなくてもよいです)。
- 非負整数 x∈{A1,…,AN} をひとつ選ぶ。
- すべての i に対して、Ai を Ai⊕x に置き換える(⊕ はビット単位 XOR 演算を表します)。
操作後の ∑i=1NAi としてありうる最大値を求めてください。
ビット単位 $\mathrm{XOR}$ 演算とは
非負整数 A,B のビット単位 XOR 、A⊕B は、以下のように定義されます。
- A⊕B を二進表記した際の 2k (k≥0) の位の数は、A,B を二進表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
3 \oplus 5 = 6$$$$011 \oplus 101 = 110
制約
- 1≤N≤3×105
- 0≤Ai<230
入力
入力は以下の形式で標準入力から与えられます。
N
A1 … AN
出力
操作後の ∑i=1NAi としてありうる最大値を出力してください。
5
1 2 3 4 5
19
例えば次のように操作を行うことで、∑i=1NAi を 19 にすることが可能です。
- はじめ、数列 A は次の状態です:(1,2,3,4,5)。
- x=1 として操作を行うと、数列 A は次の状態に変化します:(0,3,2,5,4)。
- x=5 として操作を行うと、数列 A は次の状態に変化します:(5,6,7,0,1)。このとき ∑i=1NAi=5+6+7+0+1=19 です。
5
10 10 10 10 10
50
操作を一度も行わないことで、∑i=1NAi を 50 にすることが可能です。
5
3 1 4 1 5
18