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

Задача . D. Битовый парадокс


Даны два массива целых чисел \(a\) и \(b\) длины \(n\), а также фиксированное целое число \(v\).

Отрезок \([l, r]\) назовём хорошим, если \((b_l \mid b_{l+1} \mid \ldots \mid b_r) \ge v\), где \(|\) обозначает операцию побитового ИЛИ. Далее, красота хорошего отрезка определяется как \(\max(a_l, a_{l+1}, \ldots, a_r)\).

Вам даны \(q\) запросов двух типов:

  • «1 i x»: нужно выполнить присваивание \(b_i := x\);
  • «2 l r»: найдите минимальную красоту среди всех хороших отрезков \([l_0,r_0]\), удовлетворяющих условию \(l \le l_0 \le r_0 \le r\). Если подходящих красивых отрезков нет, выведите \(-1\).

Обработайте все запросы.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 10^5\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

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

Вторая строка каждого набора входных данных содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le 10^9\)).

Третья строка каждого набора входных данных содержит \(n\) целых чисел \(b_1, b_2, \ldots, b_n\) (\(1 \le b_i \le 10^9\)).

Четвёртая строка каждого набора входных данных содержит одно целое число \(q\) (\(1 \le q \le 2 \cdot 10^5\)).

В \(i\)-й из следующих \(q\) строк содержится описание очередного запроса. Каждая строка имеет один из двух типов:

  • «1 i x» (\(1 \le i \le n\), \(1 \le x \le 10^9)\);
  • «2 l r» (\(1 \le l \le r \le n\)).

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

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

Для каждого набора входных данных выведите ответы на все запросы второго типа.

Примечание

В первом наборе входных данных \(a = [2, 1, 3]\), \(b = [2, 2, 3]\), \(v = 7\).

Первый запрос является запросом второго типа, в нём \(l = 1\) и \(r = 3\). Самый большой доступный отрезок есть \([1, 3]\), но даже на нём побитовое ИЛИ равно \(b_1 \mid b_2 \mid b_3 = 3\), что меньше \(v\). Значит, не существует ни одного хорошего отрезка.

Второй запрос просит заменить \(b_2\) на \(5\), так что массив \(b\) становится равен \([2, 5, 3]\).

Третий запрос является запросом второго типа, в нём \(l = 2\) и \(r = 3\). Есть три возможных отрезка: \([2, 2]\), \([3, 3]\) и \([2, 3]\). Однако, \(b_2 = 5 < v\), \(b_3 = 3 < v\). Так что только последний отрезок является хорошим: для него \(b_2 \mid b_3 = 7\). Значит, ответ равен \(\max(a_2, a_3) = 3\).

Четвёртый запрос является запросом второго типа, в нём \(l = 1\) и \(r = 3\). Есть три хороших отрезка: \([1, 2]\), \([2, 3]\) и \([1, 3]\). Их красоты равны \(2\), \(3\), \(3\) соответственно. Таким образом, ответ равен \(2\).

Во втором наборе входных данных \(a = [5, 1, 2, 4]\), \(b = [4, 2, 3, 3]\), \(v = 5\).

В первом запросе \(l = 1\) и \(r = 4\). Хорошими отрезками являются только следующие: \([1, 2]\), \([1, 3]\), \([1, 4]\). Их красоты равны \(5\), \(5\), \(5\) соответственно. Таким образом, ответ равен \(5\).


Примеры
Входные данныеВыходные данные
1 3
3 7
2 1 3
2 2 3
4
2 1 3
1 2 5
2 2 3
2 1 3
4 5
5 1 2 4
4 2 3 3
6
2 1 4
1 3 15
2 3 4
2 2 4
1 2 13
2 1 4
1 5
6
4
1
2 1 1
-1 3 2 
5 2 2 1 
-1

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

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