Олимпиадный тренинг

Задача . F. Отрезки с равным XOR


Давайте назовем массив \(x_1,\dots,x_m\) интересным, если возможно разделить массив на \(k>1\) частей так, чтобы побитовое исключающее ИЛИ(XOR) значений из каждой части было равно.

Формально, вам нужно разделить массив \(x\) на \(k\) последовательных отрезков, причем каждый элемент \(x\) должен принадлежать ровно \(1\) отрезку. Пусть XOR элементов из каждой части равны \(y_1,\dots,y_k\), соответственно. Тогда должно выполняться условие \(y_1=y_2=\dots=y_k\).

Например, если \(x = [1, 1, 2, 3, 0]\), вы можете разделить его следующим образом: \([\color{blue}1], [\color{green}1], [\color{red}2, \color{red}3, \color{red}0]\). Действительно, \(\color{blue}1=\color{green}1=\color{red}2 \oplus \color{red}3\oplus \color{red}0\).

Вам дан массив \(a_1,\dots,a_n\). Ваша задача — ответить на \(q\) запросов:

  • Для фиксированных \(l\), \(r\) определить, является ли подмассив \(a_l,a_{l+1},\dots,a_r\) интересным.
Входные данные

Первая строка содержит одно целое число \(t\) (\(1\le t\le 10^4\)) — количество наборов входных данных.

Первая строка каждого набора содержит два целых числа \(n\) и \(q\) (\(2 \le n \le 2 \cdot 10^5\), \(1 \le q \le 2 \cdot 10^5\)) — количество элементов в массиве и количество запросов соответственно.

Следующая строка содержит \(n\) целых чисел \(a_1,\dots,a_n\) (\(0 \le a_i < 2^{30}\)) — элементы массива.

Следующие \(q\) строк содержат по два целых числа \(l\) и \(r\) (\(1 \le l < r \le n\)) описывающие запрос.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превышает \(2 \cdot 10^5\).

Гарантируется, что сумма \(q\) по всем наборам входных данных не превышает \(2 \cdot 10^5\).

Выходные данные

Для каждого запроса выведите «YES», если подмассив интересный, и «NO» в противном случае.

Вы можете выводить «Yes» и «No» в любом регистре (например, строки «yES», «yes» и «Yes» будут распознаны как правильные ответы).

Примечание

Объяснение для первого примера:

Первый запрос описан в условии.

Во втором запросе мы должны разделить \([1,2,3]\). Возможное разделение — \([1,2],[3]\), так как \(1\oplus 2=3\).

Можно показать, что для запросов \(3,4,5\) подмассивы не интересны.


Примеры
Входные данныеВыходные данные
1 4
5 5
1 1 2 3 0
1 5
2 4
3 5
1 3
3 4
5 5
1 2 3 4 5
1 5
2 4
3 5
1 3
2 3
7 4
12 9 10 9 10 11 9
1 5
1 7
2 6
2 7
11 4
0 0 1 0 0 1 0 1 1 0 1
1 2
2 5
6 9
7 11
YES
YES
NO
NO
NO

YES
NO
NO
YES
NO

NO
NO
NO
NO

YES
NO
YES
YES

time 5000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя