问题 E: Madoka and zzuli

问题 E: Madoka and zzuli

时间限制: 1 Sec  内存限制: 128 MB
提交: 109  解决: 18
[状态] [讨论版] [提交] [命题人:]
题目描述
Madoka要报名zzuli。但在入学计算机科学考试期间,她偶然发现了一项艰巨的任务:

AND 表示按位与,OR 表示按位或。

你有一个长度为 n 的数组 a 和一个非负整数 k 。你可以在 a 数组上做以下操作:

   选出一个下标  i (1<= i<= n),将 a替换为 ( ai OR  2^j) ,(0 <=j<= 30).也就是说将二进制下的 ai 的第 j+1 位赋为 1.
  
最多做 k 次操作。

输出操作后 a1 AND a AND ...... AND a的最大值。

为Madoka解决这个问题,帮助她进入 `zzuli` !
输入
输入的第一行包含一个整数 t (1 <= t <= 100) — 测试用例的数量。测试用例的描述如下。

每个测试用例的第一行包含整数 n 和 k (1 <= n <= 2 * 10^5,0 <= k <= 10^9).

第二行是数组 a 的 n 个数 a,a2... an(0 <=ai < 2^31 )

保证所有测试用例中的n总和不超过 2 * 10^5
输出
输出经过最多k次操作后  a1 AND a AND ...... AND a的最大值。
样例输入 Copy
4
3 2
2 1 1
7 0
4 6 6 28 6 6 12
1 30
0
4 4
3 1 3 1
样例输出 Copy
2
4
2147483646
1073741825