Крабсбургеры
시간 제한3초메모리 제한1024 MB
배열을 k개의 비어 있지 않은 연속 구간으로 나누어 i번째 구간의 XOR이 [l_i, r_i]에 들어가게 하는 방법의 수를 센다.
문제
Как известно, главная особенность рецепта Крабсбургера --- это отсутствие какого-либо рецепта. Для того, чтобы иметь хоть какую-то информацию о бургерах, каждый ингридиент имеет некоторую характеристику --- КрабсИндекс. Известно лишь одно: если Крабсбургер был приготовлен с использованием ингридиентов с КрабсИндексами , то КрабсИндекс получившегося бургера будет равен .
Одним солнечным утром в КрастиКрабс зашли посетителей. Каждый заказал себе фирменный Крабсбургер, причем -й посетитель пожелал, чтобы КрабсИндекс его бургера был не меньше, чем , но и не больше, чем .
Перед поваром стоит непростая задача --- он должен приготовить все бургеров, удовлетворив пожелания клиентов, и обязательно использовав все имеющиеся ингридиенты. Перед ним лежит в ряд ингридиентов. Он раз должен взять несколько (не меньше одного) ингридиентов из левого конца ряда, и приготовить из них новый бургер, проследив, чтобы он удовлетворял заказу. Повар готовит бургеры в том же порядке, в котором поступили заказы от клиентов.
Помогите ему узнать, сколько существует способов справиться с задачей. Два способа считаются различными, если есть хотя бы один ингридиент, попавший в бургеры к разным клиентам в этих разбиениях.
입력
В первой строке входного файла даны два целых числа () --- количество ингридиентов и число клиентов.
В следующей строке дано целых чисел () --- КрабсИндексы ингридиентов.
В следующих строках дано по 2 целых числа () --- пожелания о КрабсИндексе от -го клиента.
출력
Выведите одно целое число --- количество искомых разбиений по модулю .
힌트
Исключающее или () --- логическая операция, которая имеет следующую таблицу истинности:
<<Исключающее или>> чисел, состоящих из нескольких бит, считается побитово. Например, , , .
Более подробно про <<исключающее или>> можно почитать тут: https://ru.wikipedia.org/wiki/Сложение\_по\_модулю\_2