#822. [CSP-J 2026] 按位与

[CSP-J 2026] 按位与

【题目描述】

小 R 有 nn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

小 X 给了小 R 一个正整数 mm,并要求小 R 从这 nn 个非负整数中选出恰好 mm 个,使得选出的 mm 个数的二进制按位与的值最大。

你需要帮助小 R 求出,他能选出的 mm 个数的按位与的最大值。

【输入格式】

从文件 and.in 中读入数据。

输入的第一行包含两个正整数 n,mn,m。

输入的第二行包含 nn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_n,依次表示小 R 的 nn 个非负整数。

【输出格式】

输出到文件 and.out 中。

输出一行一个非负整数,表示小 R 能选出的 mm 个数的按位与的最大值。

样例

4 2
3 15 12 12
12
5 3
31 3 1 15 7
7

【样例说明】

样例 1 解释

小 R 有 4 个非负整数:3,15,12,123,15,12,12。

  • 若小 R 选择 3,153,15,则按位与的值为 3and⁡15=33 \operatorname{and} 15=3;
  • 若小 R 选择 3,123,12,则按位与的值为 3and⁡12=03 \operatorname{and} 12=0;
  • 若小 R 选择 15,1215,12,则按位与的值为 15and⁡12=1215 \operatorname{and} 12=12;
  • 若小 R 选择 12,1212,12,则按位与的值为 12and⁡12=1212 \operatorname{and} 12=12。

因此,小 R 能选出的 mm 个数的按位与的最大值为 1212。

样例 2 解释

若小 R 选择 31,15,731,15,7,则按位与的值为 31and⁡15and⁡7=731 \operatorname{and} 15 \operatorname{and} 7=7。可以证明,小 R 能选出的 mm 个数的按位与的最大值为 77。

【数据范围】

对于所有测试数据,均有:
• 1≤m≤n≤2×1051 \le m \le n \le 2\times 10^5;
• 对于所有 ii(1≤i≤n1 \le i \le n),均有 0≤ai<2300 \le a_i < 2^{30}。

测试点编号 n≤n \le mm max⁡i=1nai<\max_{i=1}^{n} a_i < 特殊性质
1 ~ 5 20 ≤n\le n 2202^{20} 无
6 2000 =1=1
7 =n=n
8 ~ 10 =2=2
11, 12 2×1052\times 10^5 =n−1=n-1
13 ≤n\le n A
14, 15 B
16, 17 4 无
18, 19 2102^{10}
20 2302^{30}

特殊性质 A:对于所有 ii(1≤i≤n1 \le i \le n),均存在非负整数 kik_i,满足 ai=2ki−1a_i = 2^{k_i}-1。
特殊性质 B:存在非负整数 kk 满足 n=2kn=2^k,且对于所有 ii(1≤i≤n1 \le i \le n),均有 ai=i−1a_i=i-1。