atcoder#ABC261E. [ABC261E] Many Operations

[ABC261E] Many Operations

配点 : 500500

問題文

変数 XX と、XX の値を変更する NN 種類の操作があります。操作 ii は整数の組 (Ti,Ai)(T_i,A_i) で表され、意味は次の通りです。

  • Ti=1T_i=1 のとき、XX の値を X and AiX\ {\rm and}\ A_i に置き換える。
  • Ti=2T_i=2 のとき、XX の値を X or AiX\ {\rm or}\ A_i に置き換える。
  • Ti=3T_i=3 のとき、XX の値を X xor AiX\ {\rm xor}\ A_i に置き換える。

変数 XX を値 CC で初期化した状態から、以下の処理を順に実行してください。

  • 操作 11 を行い、操作後の XX の値を出力する。
  • 続けて、操作 1,21,2 を順に行い、操作後の XX の値を出力する。
  • 続けて、操作 1,2,31,2,3 を順に行い、操作後の XX の値を出力する。
  • \vdots
  • 続けて、操作 1,2,,N1,2,\ldots,N を順に行い、操作後の XX の値を出力する。
${\rm and}, {\rm or}, {\rm xor}$ とは

非負整数 A,BA, Band,or,xor{\rm and}, {\rm or}, {\rm xor} は、以下のように定義されます。

  • A and BA\ {\rm and}\ B を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち両方が 11 であれば 11、そうでなければ 00 である。
  • A or BA\ {\rm or}\ B を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち少なくとも一方が 11 であれば 11、そうでなければ 00 である。
  • A xor BA\ {\rm xor}\ B を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうちちょうど一方が 11 であれば 11、そうでなければ 00 である。

例えば、3 and 5=13\ {\rm and}\ 5 = 13 or 5=73\ {\rm or}\ 5 = 73 xor 5=63\ {\rm xor}\ 5 = 6 となります。

制約

  • 1N2×1051 \leq N \leq 2\times 10^5
  • 1Ti31\leq T_i \leq 3
  • 0Ai<2300\leq A_i \lt 2^{30}
  • 0C<2300\leq C \lt 2^{30}
  • 入力に含まれる値は全て整数である

入力

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

NN CC

T1T_1 A1A_1

T2T_2 A2A_2

\vdots

TNT_N ANA_N

出力

問題文中の指示に従って NN 行出力せよ。

3 10
3 3
2 5
1 12
9
15
12

最初、XX の値は 1010 です。

  • 操作 11 を行うと XX の値は 99 になります。
  • 続けて操作 11 を行うと XX の値は 1010 になり、さらに操作 22 を行うと 1515 になります。
  • 続けて操作 11 を行うと XX の値は 1212 になり、さらに操作 22 を行うと 1313 に、さらに続けて操作 33 を行うと 1212 になります。
9 12
1 1
2 2
3 3
1 4
2 5
3 6
1 7
2 8
3 9
0
2
1
0
5
3
3
11
2