UOJ Logo Universal Online Judge

UOJ

附件下载 统计

出题人 01 很喜欢加法,也很喜欢异或运算(即 C/C++ 里的 ^ 运算符)。有天他一拍脑袋:把两个运算混一起,岂不是妙极了?

对于一个序列 b1,,bm,他希望你将序列 b 划分为 k 段连续非空子序列,使得每一段的异或和之和最小。即,他想知道在所有满足 0=p0<p1<<pk=m 条件的序列 p 中下式的最小值: i=1k(bpi1+1xorxorbpi) 这个最小值即称为这个序列的妙妙值

但是这个问题非常简单,于是出题人 01 找来了一个长度恰好为 n 的非负整数序列 a1,,an。他想考考你,a 的每个前缀 a1,,ajkjn)的妙妙值分别是多少呢?

输入格式

第一行两个正整数 n,k,含义同题面。

接下来一行 n 个非负整数,第 i 个非负整数表示 ai

输出格式

第一行 nk+1 个整数,分别表示前 j=k,k+1,,n 个元素组成的序列的妙妙值。

样例一

input

6 2
1 1 4 5 1 4

output

2 4 1 0 4

explanation

对于序列 a1,,a6,可以将序列划分为 a1,a2a3,a4,a5,a6 两段。

此时答案为 (1xor1)+(4xor5xor1xor4)=0+4=4

注意 a1,a2,a3,a4,a5a6 也是一种合法的划分方案。

样例二

见下发文件。

数据范围同测试点 3 ~ 4。

限制与约定

测试点编号n特殊性质
1 ~ 2 15
3 ~ 4 5000
5 ~ 6 60000 ai<28
7 ~ 8 ai<212
9 ~ 10

对于所有测试点,满足 1kn60000,k8,ai<216

时间限制2s

空间限制512MB

下载

样例数据下载