小O有一个长度为 n 的数组 a,他在数组 x 上定义了一个函数 f(x),表示数组 x 中所有元素做按位或运算的结果。(例如 x=[1,2,4,8],则 f(x)=1∣2∣4∣8=15。)
小O现在希望将数组 a 分割成尽可能少的段,使得所有段的 f 函数值的最大值不超过 k。请问他最少可以将 a 分为几段,请你帮助他吧。
输入包含两行。
第一行两个正整数 n,k (1≤n≤200000),(1≤k≤109),分别表示数组 a 的长度,以及每段 f 函数值的上限。
第二行 n 个正整数 ai (1≤ai≤109),表示数组 a 的元素。
输出包含一行一个整数,如果可以做到,则输出最少分成的段数,否则输出 −1。
4 4
1 2 4 3
3
可以分为:[1, 2], [4], [3] 这三段。
扫码备注加群即可,期待您的到来~
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.