#arc151d. [arc151_d]Binary Representations and Queries

[arc151_d]Binary Representations and Queries

问题描述

给定一个长度为2N2^N的整数序列A=(A0,A1,,A2N1)A = (A_0, A_1, \ldots, A_{2^N-1})

另外,我们给出QQ个查询。对于每个i=1,2,,Qi = 1, 2, \ldots, Q,第ii个查询由两个整数XiX_iYiY_i表示,并要求你执行以下操作。

按照顺序对于每个j=0,1,2,,2N1j = 0, 1, 2, \ldots, 2^N-1,执行以下操作:

1.首先,令bN1bN2b0b_{N-1}b_{N-2}\ldots b_0jj的二进制表示形式,其中有NN个数字。此外,令jj'为将第bXib_{X_i}位取反后(将00变为11,将11变为00)的二进制表示形式bN1bN2b0b_{N-1}b_{N-2}\ldots b_0所代表的整数。 2.然后,如果bXi=Yib_{X_i} = Y_i,将AjA_j的值加到AjA_{j'}上。

在按照给定的输入顺序处理完所有的查询后,以模998244353998244353的余数形式打印AA的每个元素。

什么是NN位二进制表示?

对于非负整数XX(0X<2N0 \leq X < 2^N),NN位二进制表示是满足以下条件的长度为NN的由0011组成的唯一序列bN1bN2b0b_{N-1}b_{N-2}\ldots b_0

  • i=0N1bi2i=X\sum_{i = 0}^{N-1} b_i \cdot 2^i = X

约束条件

  • 1N181 \leq N \leq 18
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 0Ai<9982443530 \leq A_i \lt 998244353
  • 0XiN10 \leq X_i \leq N-1
  • Yi{0,1}Y_i \in \lbrace 0, 1\rbrace
  • 输入中的所有值都是整数。

输入

输入以如下格式从标准输入给出:

NN QQ A0A_0 A1A_1 \ldots A2N1A_{2^N-1} X1X_1 Y1Y_1 X2X_2 Y2Y_2 \vdots XQX_Q YQY_Q

输出

对于每个i=0,1,,2N1i = 0, 1, \ldots, 2^N-1,按照以下格式,用空格分隔打印在处理完所有查询后将AiA_i除以998244353998244353所得余数AiA'_i

A0A'_0 A1A'_1 \ldots A2N1A'_{2^N-1}


样例输入1

2 2
0 1 2 3
1 1
0 0

样例输出1

2 6 2 5

第一个查询要求你执行以下操作。

  • 对于j=0j = 0,我们有b1b0=00b_1b_0 = 00j=2j' = 2。由于b11b_1 \neq 1,跳过相加操作。
  • 对于j=1j = 1,我们有b1b0=01b_1b_0 = 01j=3j' = 3。由于b11b_1 \neq 1,跳过相加操作。
  • 对于j=2j = 2,我们有b1b0=10b_1b_0 = 10j=0j' = 0。由于b1=1b_1 = 1,将A2A_2的值加到A0A_0上。现在A=(2,1,2,3)A = (2, 1, 2, 3)
  • 对于j=3j = 3,我们有b1b0=11b_1b_0 = 11j=1j' = 1。由于b1=1b_1 = 1,将A3A_3的值加到A1A_1上。现在A=(2,4,2,3)A = (2, 4, 2, 3)

第二个查询要求你执行以下操作。

  • 对于j=0j = 0,我们有b1b0=00b_1b_0 = 00j=1j' = 1。由于b0=0b_0 = 0,将A0A_0的值加到A1A_1上。现在A=(2,6,2,3)A = (2, 6, 2, 3)
  • 对于j=1j = 1,我们有b1b0=01b_1b_0 = 01j=0j' = 0。由于b00b_0 \neq 0,跳过相加操作。
  • 对于j=2j = 2,我们有b1b0=10b_1b_0 = 10j=3j' = 3。由于b0=0b_0 = 0,将A2A_2的值加到A3A_3上。现在A=(2,6,2,5)A = (2, 6, 2, 5)
  • 对于j=3j = 3,我们有b1b0=11b_1b_0 = 11j=2j' = 2。由于b00b_0 \neq 0,跳过相加操作。

因此,在处理完所有查询后,AA将为(2,6,2,5)(2, 6, 2, 5)


样例输入2

3 10
606248357 338306877 919152167 981537317 808873985 845549408 680941783 921035119
1 1
0 0
0 0
0 0
0 1
0 1
0 1
2 0
2 0
2 0

样例输出2

246895115 904824001 157201385 744260759 973709546 964549010 61683812 205420980