atcoder#ARC146B. [ARC146B] Plus and AND

[ARC146B] Plus and AND

配点 : 500500

問題文

長さ NN の非負整数列 A=(A1,A2,,AN)A=(A_1,A_2,\dots,A_N) が与えられます。あなたは以下の操作を MM 回以下行うことができます。(11 回も行わなくてもよいです。)

  • 1iN1 \le i \le N を満たす整数 ii を選び、AiA_i11 増やす。

その後、AA の中から KK 要素を選びます。

選んだ KK 要素のビット単位 AND\mathrm{AND} の最大値を求めてください。

ビット単位 $\mathrm{AND}$ 演算とは

整数 $A, B$ のビット単位 $\mathrm{AND}$$A\ \mathrm{AND}\ B$ は以下のように定義されます。

  • $A\ \mathrm{AND}\ B$ を二進表記した際の $2^k$ ($k \geq 0$) の位の数は、$A, B$ を二進表記した際の $2^k$ の位の数のうち両方が $1$ であれば $1$、そうでなければ $0$ である。
例えば、3\ \mathrm{AND}\ 5 = 1 となります (二進表記すると: 011\ \mathrm{AND}\ 101 = 001)。
一般に k 個の整数 p_1, p_2, p_3, \dots, p_k のビット単位 \mathrm{AND}(\dots ((p_1\ \mathrm{AND}\ p_2)\ \mathrm{AND}\ p_3)\ \mathrm{AND}\ \dots\ \mathrm{AND}\ p_k) と定義され、これは p_1, p_2, p_3, \dots p_k の順番によらないことが証明できます。

制約

  • 1KN2×1051 \le K \le N \le 2 \times 10^5
  • 0M<2300 \le M < 2^{30}
  • 0Ai<2300 \le A_i < 2^{30}
  • 入力は全て整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM KK

A1A_1 A2A_2 \dots ANA_N

出力

答えを出力せよ。

4 8 2
1 2 4 8
10

以下のような手順を踏むことで 選んだ 22 要素の AND\mathrm{AND} として 1010 を達成できます。

  • A3A_3 を選ぶ操作を 66 回行う。A3=10A_3 = 10 となる。
  • A4A_4 を選ぶ操作を 22 回行う。A4=10A_4 = 10 となる。
  • A3,A4A_3,A_4 を選ぶ。22 要素の AND\mathrm{AND}1010 である。

選んだ 22 要素の AND\mathrm{AND}1111 以上にすることはできないので、解は 1010 です。

5 345 3
111 192 421 390 229
461