#P1319. 数位翻转

数位翻转

数位翻转

题目描述

小明创造了一个函数 f(x)f(x) 用来翻转 xx 的二进制的数位(无前导 00)。比如f(11)=13f(11) = 13,因为 11=(1011)211 = (1011)2,将其左右翻转后,变为 13=(1101)213 = (1101)2;再比如f(3)=3f(0)=0f(2)=f(4)=f(8)=1f(3) = 3,f(0) = 0,f(2) = f(4) = f(8) = 1 等等。

小明随机出了一个长度为 nn 的整数数组 a1,a2,...,an{a_1, a_2, ..., a_n},他想知道,在这个数组中选择最多 mm 个不相交的区间,将这些区间内的数进行二进制数位翻转(将aia_i 变为 f(ai)f(a_i))后,整个数组的和最大是多少?

输入格式

输入共 22 行。

第一行为两个正整数 n,mn, m

第二行为 nn 个由空格分开的整数 a1,a2,...,ana_1, a_2, ..., a_n

输出格式

输出共 11 行,一个整数表示答案。

样例 #1

样例输入 #1

5 3
11 12 13 14 15

样例输出 #1

67

提示

【样例说明 1】只翻转 a1a_1,和为 13+12+13+14+15=6713 + 12 + 13 + 14 + 15 = 67

再比如:

【样例输入 2】66 223223 88 1111 1919 1616 3535

【样例输出 2】134134

【样例说明 2】翻转区间 [a3,a4][a3, a4][a6][a6],和为 23+8+13+25+16+49=13423 + 8 + 13 + 25 + 16 + 49 = 134

【评测用例规模与约定】

对于 20%20\% 的评测用例,保证 n,m20n, m ≤ 20

对于 100%100\% 的评测用例,保证 n,m10000ai109n, m ≤ 1000,0 ≤ a_i ≤ 10^9