#USACO613. [USACO 6.1.3]Cow XOR

[USACO 6.1.3]Cow XOR

奶牛异或

Adrian Vladu -- 2005

农夫约翰在喂奶牛时遇到了另一个问题。他的 N 头奶牛(1 ≤ N ≤ 100,000)编号为 1..N,按社会等级排成一排。1 号奶牛等级最高,N 号最低。每头奶牛还被分配了一个 0 到 2^21-1 之间的整数(不唯一)。

帮助 FJ 选择一组连续的奶牛,使得它们分配的数字的按位异或值最大。如果有多个这样的序列,选择最后一个奶牛等级最高的序列(即结束位置最靠后)。如果仍然并列,选择最短的序列。

时间限制:0.5 秒

程序名称:cowxor

输入格式

  • 第一行:一个整数 N
  • 第 2..N+1 行:N 个整数,范围 0 到 2^21-1,代表奶牛的分配数字。第 j 行描述社会等级为 j-1 的奶牛。

样例输入(文件 cowxor.in)

5
1
0
5
4
2

输入说明:

有 5 头奶牛。1 号分配 1,2 号 0,3 号 5,4 号 4,5 号 2。

输出格式

  • 第一行:三个空格分隔的整数,分别是:最大异或值,序列的开始位置,序列的结束位置。

样例输出(文件 cowxor.out)

6 4 5

输出说明:

4 xor 2 = 6 (001) xor (010) = (011)