atcoder#ARC152E. [ARC152E] Xor Annihilation

[ARC152E] Xor Annihilation

配点 : 800800

問題文

数直線上の x=1,2,3,...,2N1x=1,2,3,...,2^N-1 の位置に 2N12^N-1 個のボールが並んでおり、x=ix=i にあるボールは wiw_i の重みを持っています。ただし、w1,w2,...,w2N1w_1, w_2,...,w_{2^N-1}11 から 2N12^N-1 までの整数を並び替えた数列です。 さらに、あなたは 2N12^N-1 以下の負でない整数 ZZ11 つ選び、座標 x=±100100100x=\pm 100^{100^{100}} にそれぞれ ZZ の重みを固定します。 その後、各ボールは次の規則にしたがって、一斉に運動を始めます。

  • 各時点で、ボールの存在している座標より真に右側にある座標・ボールの重みの総 XOR\mathrm{XOR}RR、真に左側にある座標・ボールの重みの総 XOR\mathrm{XOR}LL とすると、このボールは R>LR>L であれば右側に、L>RL>R であれば左側に毎秒 11 の速さで動き、L=RL=R であれば静止する。
  • 左右から来たボールが同じ座標に到達したときなど、同じ座標に同時に複数のボールが存在した場合、これらのボールは合体し、その重みは合体前の重みの総 XOR\mathrm{XOR} となる。

このとき、100100100^{100} 秒以内に全てのボールが静止するような ZZ はいくつあるでしょうか。

$\mathrm{XOR}$ とは

非負整数 $A, B$ のビット単位 $\mathrm{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)。
一般に k 個の非負整数 p_1, p_2, p_3, \dots, p_k のビット単位 \mathrm{XOR}(\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k) と定義され、これは p_1, p_2, p_3, \dots, p_k の順番によらないことが証明できます。

制約

  • 2N182\leq N\leq 18
  • 1wi2N11\leq w_i\leq 2^N-1
  • iji\neq j のとき wiwjw_i\neq w_j
  • 入力される値はすべて整数である

入力

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

NN

w1w_1 w2w_2 \ldots w2N1w_{2^N-1}

出力

答えを整数で出力せよ。

2
1 2 3
1

ii の重みを持つボールを単に ii と呼びます。

例えば Z=0Z=0 とした場合、はじめ 1122 は右向きに、33 は左向きに動きます。 すると 2233 がぶつかって合体し、この瞬間から左向きに動き始めます。 そののち、11 から 33 まで全てのボールが合体した瞬間に合体後のボールは静止します。 したがって、Z=0Z=0 は条件を満たします。

また、Z=3Z=3 とした場合、1122 は左向き、33 は右向きに、固定した重みに向かって 100100100100^{100^{100}} 秒程度動き続けることになります。 したがって、Z=3Z=3 は条件を満たしません。

実は Z=0Z=0 のみが条件を満たすため、11 と答えてください。

3
7 1 2 3 4 5 6
2