问题 C: [CSP-J 2025] 异或和

内存限制:512 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:8 解决:1

题目描述

小 R 有一个长度为 的非负整数序列 。定义一个区间 () 的权值为  的二进制按位异或和,即 ,其中 表示二进制按位异或。

小 X 给了小 R 一个非负整数 。小 X 希望小 R 选择序列中尽可能多的不相交的区间,使得每个区间的权值均为 。两个区间 相交当且仅当两个区间同时包含至少一个相同的下标,即存在 使得  且 。

例如,对于序列 ,若 ,则小 R 可以选择区间 和区间 ,权值分别为 和 ;若 ,则小 R 可以选择区间 和区间 ,权值分别为 和 。

你需要帮助小 R 求出他能选出的区间数量的最大值。


说明/提示



【样例 1 解释】

小 R 可以选择区间 和区间 ,异或和分别为 和 。可以证明,小 R 能选出的区间数量的最大值为 。

【样例 2 解释】

小 R 可以选择区间 和区间 ,异或和分别为 和 。可以证明,小 R 能选出的区间数量的最大值为 。

【样例 3 解释】

小 R 可以选择区间 ,异或和为 。可以证明,小 R 能选出的区间数量的最大值为 。注意:小 R 不能同时选择区间 和区间 ,因为这两个区间同时包含下标 。

【数据范围】

对于所有测试数据,保证:

  • , ;
  • 对于所有 ,均有 。



特殊性质 A: 对于所有 ,均有 。

特殊性质 B: 对于所有 ,均有 。

特殊性质 C: 对于所有 ,均有 。


输入

输入的第一行包含两个非负整数 ,分别表示小 R 的序列长度和小 X 给小 R 的非负整数。

输入的第二行包含 个非负整数 ,表示小 R 的序列。

输出

输出一行一个非负整数,表示小 R 能选出的区间数量的最大值。

样例输入 复制

样例输入1:
4 2
2 1 0 3
样例输出1:
2

样例输入2:
4 3
2 1 0 3
样例输出2:
2

样例输入3:
4 0
2 1 0 3
样例输出3:
1