atcoder#ABC261E. [ABC261E] Many Operations

[ABC261E] Many Operations

题目描述

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

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

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

  • 操作 1 1 を行い、操作後の X X の値を出力する。
  • 続けて、操作 1,2 1,2 を順に行い、操作後の X X の値を出力する。
  • 続けて、操作 1,2,3 1,2,3 を順に行い、操作後の X X の値を出力する。
  • \vdots
  • 続けて、操作 1,2,,N 1,2,\ldots,N を順に行い、操作後の X X の値を出力する。

 and,  or,  xor {\rm\ and},\ {\rm\ or},\ {\rm\ xor} とは 非負整数 A, B A,\ B  and,  or,  xor {\rm\ and},\ {\rm\ or},\ {\rm\ xor} は、以下のように定義されます。 - A  and B A\ {\rm\ and}\ B を二進表記した際の 2k 2^k (k  0 k\ \geq\ 0 ) の位の数は、A, B A,\ B を二進表記した際の 2k 2^k の位の数のうち両方が 1 1 であれば 1 1 、そうでなければ 0 0 である。

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

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

输入格式

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

N N C C T1 T_1 A1 A_1 T2 T_2 A2 A_2 \vdots TN T_N AN A_N

输出格式

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

题目大意

我们有一个正整数 XX ,当然还有 NN 条位运算操作,按照 Ti AiT_i\ A_i 输入,其中

  • Ti=1T_i=1 表示该操作为 and\operatorname{and}

  • Ti=2T_i=2 表示该操作为 or\operatorname{or}

  • Ti=3T_i=3 表示该操作为 xor\operatorname{xor}

ii 条操作把当前的 XX 执行 1,2,,i1,2,\cdots ,iii 条操作。 执行完成后输出 XX 的值。

3 10
3 3
2 5
1 12
9
15
12
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

提示

制約

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

Sample Explanation 1

最初、X X の値は 10 10 です。 - 操作 1 1 を行うと X X の値は 9 9 になります。 - 続けて操作 1 1 を行うと X X の値は 10 10 になり、さらに操作 2 2 を行うと 15 15 になります。 - 続けて操作 1 1 を行うと X X の値は 12 12 になり、さらに操作 2 2 を行うと 13 13 に、さらに続けて操作 3 3 を行うと 12 12 になります。