#ATarc151d. [ARC151D] Binary Representations and Queries

[ARC151D] Binary Representations and Queries

题目描述

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

同时给出 QQ 个查询。对于第 ii 个查询(i=1,2,,Qi = 1, 2, \ldots, Q),给定两个整数 XiX_iYiY_i,执行以下操作:

按顺序对 j=0,1,2,,2N1j = 0, 1, 2, \ldots, 2^N-1 执行以下步骤:

  1. 首先,将 jjNN 位二进制表示记为 bN1bN2b0b_{N-1}b_{N-2}\ldots b_0。然后,通过反转 bXib_{X_i}00 变为 1111 变为 00)得到一个新的二进制表示,并将其对应的整数记为 jj'
  2. 如果 bXi=Yib_{X_i} = Y_i,则将 AjA_j 的值加到 AjA_{j'} 上。

请输出所有查询按给定顺序执行后,AA 中每个元素对 998244353998244353 取模的结果。

关于 NN 位二进制表示的定义:非负整数 XX0X<2N0 \leq X < 2^N)的 NN 位二进制表示是唯一满足以下条件的长度为 NN0011 组成的序列 bN1bN2b0b_{N-1}b_{N-2}\ldots b_0

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

输入格式

输入通过标准输入给出,格式如下:

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_i998244353998244353 取模的结果 AiA'_i,用空格分隔:

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

样例 1

输入

2 2
0 1 2 3
1 1
0 0

输出

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

输出

246895115 904824001 157201385 744260759 973709546 964549010 61683812 205420980

说明/提示

约束条件

  • 1N181 \leq N \leq 18
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 0Ai<9982443530 \leq A_i < 998244353
  • 0XiN10 \leq X_i \leq N-1
  • Yi{0,1}Y_i \in \{0, 1\}
  • 所有输入均为整数

样例解释 #1

第一个查询的操作如下:

  • 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 上,AA 变为 (2,1,2,3)(2,1,2,3)
  • j=3j=3 时,b1b0=11b_1b_0=11j=1j'=1。由于 b1=1b_1=1,将 A3A_3 加到 A1A_1 上,AA 变为 (2,4,2,3)(2,4,2,3)

第二个查询的操作如下:

  • j=0j=0 时,b1b0=00b_1b_0=00j=1j'=1。由于 b0=0b_0=0,将 A0A_0 加到 A1A_1 上,AA 变为 (2,6,2,3)(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 上,AA 变为 (2,6,2,5)(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)