题目描述
長さ 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 はビットごとの論理和を表す。
输入格式
入力は以下の形式で標準入力から与えられる。
N A0 A1 ... A2N−1
输出格式
2N−1 行出力せよ。 i 行目には、K=i のときの上記の問題の答えを出力せよ。
题目大意
给你一个长度为 2n 的序列 a,每个1≤K≤2n−1,找出最大的 ai+aj(iorj≤K,0≤i<j<2n)并输出。
or 表示按位或运算。
2
1 2 3 1
3
4
5
3
10 71 84 33 6 47 23 25
81
94
155
155
155
155
155
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
提示
制約
- 1 ≤ N ≤ 18
- 1 ≤ Ai ≤ 109
- 入力はすべて整数である。
Sample Explanation 1
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 です。