atcoder#ABC283G. [ABC283G] Partial Xor Enumeration

[ABC283G] Partial Xor Enumeration

配点 : 600600

問題文

長さ NN の非負整数列 A=(A1,A2,,AN)A=(A _ 1,A _ 2,\ldots,A _ N) が与えられます。

非負整数列 (a1,a2,,an)(a _ 1,a _ 2,\ldots,a _ n)xor\operatorname{xor} を、すべての非負整数 jj について次の条件を満たすような整数 XX と定義します。

  • a1,,ana _ 1,\ldots,a _ n のうち二進法で表したとき 2j2^j の位が 11 であるものが奇数個であるとき、かつそのときに限り 2j2^j の位が 11 である

非負整数の集合 $\lbrace s _ 1,s _ 2,\ldots,s _ k\rbrace\ (s _ 1\lt s _ 2\lt\cdots\lt s _ k)$ を、AA の連続とは限らない(空でもよい)部分列の xor\operatorname{xor} として得られる整数の集合とします。

整数 L,RL,R が与えられるので、sL,sL+1,,sRs _ L,s _ {L+1},\ldots,s _ R をこの順に出力してください。

制約

  • 1N2×1051\leq N\leq2\times10^5
  • 0Ai<260 (1iN)0\leq A _ i\lt2^{60}\ (1\leq i\leq N)
  • 1LRk1\leq L\leq R\leq k
  • RL2×105R-L\leq2\times10^5
  • 入力はすべて整数

入力

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

NN LL RR

A1A _ 1 A2A _ 2 \ldots ANA _ N

出力

si (LiR)s _ i\ (L\leq i\leq R)ii の昇順に空白区切りで出力せよ。

4 1 8
2 21 17 21
0 2 4 6 17 19 21 23

AA の連続とは限らない部分列としてありえる列は $(),(2),(17),(21),(2,17),(2,21),(17,21),(21,17),(21,21),(2,17,21),(2,21,17),(2,21,21),(21,17,21),(2,21,17,21)$ の 1414 種類です。 それぞれ、 xor\operatorname{xor} は次のようになります。

  • 空列の xor\operatorname{xor}00 です。
  • (2)(2)xor\operatorname{xor}22 です。
  • (17)(17)xor\operatorname{xor}1717 です。
  • (21)(21)xor\operatorname{xor}2121 です。
  • (2,17)(2,17)xor\operatorname{xor}1919 です。
  • (2,21)(2,21)xor\operatorname{xor}2323 です。
  • (17,21)(17,21)xor\operatorname{xor}44 です。
  • (21,17)(21,17)xor\operatorname{xor}44 です。
  • (21,21)(21,21)xor\operatorname{xor}00 です。
  • (2,17,21)(2,17,21)xor\operatorname{xor}66 です。
  • (2,21,17)(2,21,17)xor\operatorname{xor}66 です。
  • (2,21,21)(2,21,21)xor\operatorname{xor}22 です。
  • (21,17,21)(21,17,21)xor\operatorname{xor}1717 です。
  • (2,21,17,21)(2,21,17,21)xor\operatorname{xor}1919 です。

よって、AA の部分列のビットごとの排他的論理和としてありえる値の集合は {0,2,4,6,17,19,21,23}\lbrace0,2,4,6,17,19,21,23\rbrace です。

4 3 7
2 21 17 21
4 6 17 19 21
5 1 1
0 0 0 0 0
0
6 21 21
88 44 82 110 121 80
41
12 26 48
19629557415 14220078328 11340722069 30701452525 22333517481 720413777 11883028647 20926361028 24376768297 720413777 27999065315 13558621130
13558621130 14220078328 14586054825 15518998043 15970974282 16379590008 17091531049 17412316967 17836964726 18263536708 18965057557 19629557415 20282860278 20926361028 21302757781 21908867832 22333517481 22893781403 23595304394 23723463544 24376768297 24885524507 25261923402

入力や出力が 32bit32\operatorname{bit} 整数に収まらない場合があることに注意してください。