#ATarc100c. [ARC100E] Or Plus Max

[ARC100E] Or Plus Max

题目描述

有一个长度为 2N2^N 的整数序列 A0, A1, ..., A2N1A_0,\ A_1,\ ...,\ A_{2^N-1}。(注意下标从 00 开始)

对于所有满足 1K2N11\leq K\leq 2^N-1 的整数 KK,请解决以下问题:

  • i,ji,j 为整数,满足 0i<j2N10\leq i<j\leq 2^N-1,且 (i or j)K(i\ \text{or}\ j)\leq K,求 Ai+AjA_i+A_j 的最大值。这里 oror 表示按位或运算。

输入格式

输入以以下格式从标准输入中给出。

NN A0A_0 A1A_1 ...... A2N1A_{2^N-1}

输出格式

请输出 2N12^N-1 行。第 ii 行输出 K=iK=i 时上述问题的答案。

样例 1

输入

2
1 2 3 1

输出

3
4
5

样例 2

输入

3
10 71 84 33 6 47 23 25

输出

81
94
155
155
155
155
155

样例 3

输入

4
75 26 45 72 81 47 97 97 2 2 25 82 84 17 56 32

输出

101
120
147
156
156
178
194
194
194
194
194
194
194
194
194

说明/提示

限制条件

  • 1N181\leq N\leq 18
  • 1Ai1091\leq A_i\leq 10^9
  • 所有输入均为整数。

样例解释 1

K=1K=1 时,可能的 (i,j)(i,j) 只有 (0,1)(0,1),所以答案为 A0+A1=1+2=3A_0+A_1=1+2=3
K=2K=2 时,可能的 (i,j)(i,j)(0,1),(0,2)(0,1),(0,2)。当 (i,j)=(0,2)(i,j)=(0,2) 时,Ai+Aj=1+3=4A_i+A_j=1+3=4,这是最大值,所以答案为 44
K=3K=3 时,可能的 (i,j)(i,j)(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)。当 (i,j)=(1,2)(i,j)=(1,2) 时,Ai+Aj=2+3=5A_i+A_j=2+3=5,这是最大值,所以答案为 55

由 ChatGPT 4.1 翻译