AT_icpc2013summer_warmingUp_f Maximum Segment XOR

题目描述

异或运算是程序员的常用操作之一。为了测试弟子 wata 的能力,天才程序员 KM 设置了一个问题:给定 $N$ 个整数 $\{a_i\}$,找到一对整数 $s$ 和 $t$($1 \leq s \leq t \leq N$),使得从 $a_s$ 到 $a_t$ 的异或结果 $a_s \oplus a_{s+1} \oplus \ldots \oplus a_t$ 达到最大值。由于 wata 没能解出这个问题,他就请你帮忙解决,作为他优秀的朋友和编程高手。在输入文件中,第一行是整数 $N$($1 \leq N \leq 10^5$),第二行是 $N$ 个整数 $\{a_i\}$($0 \leq a_i$)。你需要输出达到最大异或值的对 $(s, t)$,以及这个最大值。如果有多个符合条件的对,输出其中字典序最小的那一对。 ### 示例 输入: ``` 5 1 2 3 4 5 ``` 输出: ``` 7 3 4 ``` 输入: ``` 3 3 3 3 ``` 输出: ``` 3 1 1 ``` 输入: ``` 4 1 2 4 8 ``` 输出: ``` 15 1 4 ```

输入格式

第一行输入一个整数 $N$,表示整数的数量。 第二行输入 $N$ 个整数,表示数组 $\{a_i\}$。

输出格式

输出一行,包含三个整数:最大异或值和对应的下标对 $(s, t)$。

说明/提示

- 数字 $N$ 的范围是 $1 \leq N \leq 10^5$ - 数组中的整数 $a_i$ 满足 $0 \leq a_i$ **本翻译由 AI 自动生成**