Problem Description
给定一个长度为 n 的整数序列 a=(a1,a2,…,an)。你需要将这个序列划分为 m 个非空且连续的子段。对于每一个子段,定义其价值为该子段内所有元素进行 按位与运算的结果。请你规划一种划分方案,使得这 m 个子段的价值之和最大,并输出这个最大值。
形式化定义:你需要找到 m−1 个分割点 k1,k2,…,km−1(满足 1≤k1<k2<⋯<km−1<n),将序列分为 m 段:[1,k1],[k1+1,k2],…,[km−1+1,n]。设 $val(l, r) = a_l \ \& \ a_{l+1} \ \& \ \dots \ \& \ a_r$,你需要最大化:
i=1∑mval(Li,Ri)
其中 [Li,Ri] 是第 i 个子段的下标区间。
第一行包含两个整数 n,m,分别表示序列的长度和需要切分的段数。
第二行包含 n 个整数 a1,a2,…,an (0≤ai≤109),表示信号序列。
输出一个整数,表示能获得的最大价值和。
Sample
3 2
7 3 1
Output1:
8
4 2
10 7 0 15
Output2:
15
Hint
1≤n≤1e5,1≤m≤50,
1≤ai≤1e9.