配点 : 800 点
問題文
N 個の正整数列からなる数列 A=(A0,A1,…,AN−1) が与えられます。
数列 A に対して以下の [操作] を好きな回数行うことができます。
数列 A に操作を行うことによって得られる数列のうち、各要素の和の最大値を求めてください。
[操作]
整数 i (0≤i≤N−1) を選び、Ai xor A(i+1)modN を A(i+1)modN に代入する。
ただし、xor は、ビットごとの排他的論理和を表します。
制約
- 2≤N≤105
- 1≤Ai≤109 (1≤i≤N)
- 入力は全て整数である
入力
入力は以下の形式で標準入力から与えられます。
出力
数列 A に操作を行うことによって得られる数列のうち、各要素の和の最大値を出力してください。
サンプル
まず、 i=0 として操作を行うと、A0 xor A1 の値を A1 に代入することになり、A=(1,3,3) となります。
次に、 i=2 として操作を行うと、A2 xor A0 の値を A0 に代入することになり、A=(2,3,3) となります。
このとき、A の各要素の和は 8 となり、これが最大です。