atcoder#ARC146B. [ARC146B] Plus and AND

[ARC146B] Plus and AND

题目描述

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

  • 1  i  N 1\ \le\ i\ \le\ N を満たす整数 i i を選び、Ai A_i 1 1 増やす。

その後、A A の中から K K 要素を選びます。

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

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

  • A AND B A\ \mathrm{AND}\ B を二進表記した際の 2k 2^k (k  0 k\ \geq\ 0 ) の位の数は、A, B A,\ B を二進表記した際の 2k 2^k の位の数のうち両方が 1 1 であれば 1 1 、そうでなければ 0 0 である。

例えば、3 AND 5 = 1 3\ \mathrm{AND}\ 5\ =\ 1 となります (二進表記すると: 011 AND 101 = 001 011\ \mathrm{AND}\ 101\ =\ 001 )。
一般に k k 個の整数 p1, p2, p3, , pk p_1,\ p_2,\ p_3,\ \dots,\ p_k のビット単位 AND \mathrm{AND} は $ (\dots\ ((p_1\ \mathrm{AND}\ p_2)\ \mathrm{AND}\ p_3)\ \mathrm{AND}\ \dots\ \mathrm{AND}\ p_k) $ と定義され、これは p1, p2, p3,  pk p_1,\ p_2,\ p_3,\ \dots\ p_k の順番によらないことが証明できます。 ​

输入格式

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

N N M M K K A1 A_1 A2 A_2 \dots AN A_N

输出格式

答えを出力せよ。

题目大意

给定一个非负整数序列,可以将一些整数变大,总量不超过 MM ,从中选 KK 个整数,求这 KK 个整数的最大位与运算值。

translate by @wsfxk (uid=376161)

4 8 2
1 2 4 8
10
5 345 3
111 192 421 390 229
461

提示

制約

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

Sample Explanation 1

以下のような手順を踏むことで 選んだ 2 2 要素の AND \mathrm{AND} として 10 10 を達成できます。 - A3 A_3 を選ぶ操作を 6 6 回行う。A3 = 10 A_3\ =\ 10 となる。 - A4 A_4 を選ぶ操作を 2 2 回行う。A4 = 10 A_4\ =\ 10 となる。 - A3,A4 A_3,A_4 を選ぶ。2 2 要素の AND \mathrm{AND} 10 10 である。 選んだ 2 2 要素の AND \mathrm{AND} 11 11 以上にすることはできないので、解は 10 10 です。