10
24
2015
0

[Codeforces Round #320] "Or" Game


D. "Or" Game
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given n numbers a1, a2, ..., an. You can perform at most k operations. For each operation you can multiply one of the numbers by x. We want to make  as large as possible, where  denotes the bitwise OR.

Find the maximum possible value of  after performing at most k operations optimally.

Input

The first line contains three integers nk and x (1 ≤ n ≤ 200 0001 ≤ k ≤ 102 ≤ x ≤ 8).

The second line contains n integers a1, a2, ..., an (0 ≤ ai ≤ 109).

Output

Output the maximum value of a bitwise OR of sequence elements after performing operations.

Sample test(s)
input
3 1 2
1 1 1
output
3
input
4 2 3
1 2 4 8
output
79
Note

For the first sample, any possible choice of doing one operation will result the same three numbers 112 so the result is .

For the second sample if we multiply 8 by 3 two times we'll get 72. In this case the numbers will become 12,472 so the OR value will be 79 and is the largest possible result.

题目大意:给出一个长度为n的序列a,可以进行k次操作,每次操作可以在序列中任选一个数将其乘x。求所有操作结束后最大的$a_1|a_2|...|a_n$(|表示按位或)。


最优解一定是把所有操作都应用在同一个数上,因为对于其他可能,可以把其他数上的操作都给按当前方案应用操作后最大的数,这会使提高这个数的最高位,使按位或得出的结果更大。

代码在此。

Category: 题解 | Tags: 位运算 贪心 Codeforces | Read Count: 329

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com