问题 4733 --位或运算

4733: 位或运算★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 156  解决: 52
[提交][状态][命题人:]

题目描述

任选n个整数a1,a2,…,an一个整数k。找到一组(i,j) 满足1i<jn使得 ijk(ai|aj)值最大。

这里,|是按位或运算符。

输入

第一行包含一个整数t(1t10000)—测试用例的数量。

每个测试用例的第一行包含两个整数n(2≤n≤10^5)和k(1≤k≤min(n,100))。

每个测试用例的第二行包含n个整数a1,a2,…,an(0≤ai≤n)。

保证n对所有测试用例的和不超过3⋅10^5。

输出

对于每个测试用例,打印单个整数值ijk(ai|aj)

样例输入
Copy
4
3 3
1 1 3
2 2
1 2
4 3
0 1 2 3
6 6
3 2 0 0 5 6
样例输出
Copy
-1
-4
3
12

提示

假设f(i,j)=ijk(ai|aj)

在第一个测试用例中,

f(1,2)=12k(a1|a2)=23(1|1)=1

f(1,3)=13k(a1|a3)=33(1|3)=6

f(2,3)=23k(a2|a3)=63(1|3)=3

所以最大值是f(1,2)=1

在第四个测试用例中,最大值是f(3,4)=12

来源

[提交][状态]