题目描述
有一个长度为2N的整数序列A0,A1,...,A2N−1。注意,序列是以0为起始索引的。
对于满足1≤K≤2N−1的每个整数K,解决以下问题:
- 令i和j为整数。找到满足0≤i<j≤2N−1和(i or j)≤K的Ai+Aj的最大值,这里的or表示按位或运算。
约束条件
- 1≤N≤18
- 1≤Ai≤109
- 输入中的所有值均为整数。
输入
输入以以下格式从标准输入给出:
N
A0 A1 ... A2N−1
输出
打印出2N−1行。第i行打印出上述问题中K=i时的答案。
示例输入 1
2
1 2 3 1
示例输出 1
3
4
5
对于K=1,唯一可能的i和j的组合是(i,j)=(0,1),所以答案是A0+A1=1+2=3。
对于K=2,可能的i和j的组合是(i,j)=(0,1),(0,2)。当(i,j)=(0,2)时,Ai+Aj=1+3=4。这是最大值,所以答案是4。
对于K=3,可能的i和j的组合是(i,j)=(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)。当(i,j)=(1,2)时,Ai+Aj=2+3=5。这是最大值,所以答案是5。
示例输入 2
3
10 71 84 33 6 47 23 25
示例输出 2
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
示例输出 3
101
120
147
156
156
178
194
194
194
194
194
194
194
194
194