CF620F Xors on Segments

题目描述

给定一个包含 $n$ 个整数的数组 $a_i$ 和 $m$ 个查询。每个查询由两个整数 $(l_j, r_j)$ 描述。 定义函数 $f(u, v) = u \oplus (u+1) \oplus \ldots \oplus v$,其中 $u \leq v$,$\oplus$ 表示按位异或运算。 对于每个查询,输出在满足 $l_j \leq x, y \leq r_j$ 且 $a_x \leq a_y$ 的条件下,函数 $f(a_x, a_y)$ 的最大值。

输入格式

第一行包含两个整数 $n, m$($1 \leq n \leq 5 \times 10^4$, $1 \leq m \leq 5 \times 10^3$),表示数组的大小和查询的数量。 第二行包含 $n$ 个整数 $a_i$($1 \leq a_i \leq 10^6$),表示数组 $a$ 的元素。 接下来的 $m$ 行,每行包含两个整数 $l_j, r_j$($1 \leq l_j \leq r_j \leq n$),表示第 $j$ 个查询。

输出格式

对于每个查询,输出一行整数 $a_j$,表示在满足条件下的 $f(a_x, a_y)$ 的最大值。