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

Задача . D. Пути в полном бинарном дереве


Пусть T — полное бинарное дерево, состоящее из n вершин. Это означает, что ровно одна вершина является его корнем и у каждой вершины либо ровно два сына (левый и правый), либо нет сыновей (вершина является листом). Все листы полного бинарного дерева находятся на одинаковом расстоянии от корня. Очевидно, число n таково, что n + 1 обязательно является степенью числа 2.

На рисунке ниже изображен пример полного бинарного дерева для n = 15.

Вершины дерева будем нумеровать от 1 до n специальным образом. Нумерацию будем производить рекурсивным образом: сначала рекурсивно назначим номера вершинам левого поддерева (если оно есть), затем дадим очередной номер текущей вершине, а после этого рекурсивно назначим номера вершинам правого поддерева (если оно есть). Номера на рисунке выше назначены именно таким образом. Отметим, что описанный способ однозначно определяет номера вершин. Такой порядок обхода бинарного дерева называется симметричным.

Напишите программу, которая по заданному числу n и q запросам возвращает ответ на каждый из них.

Каждый из запросов — это целое число ui (1 ≤ ui ≤ n) и строка si, где ui — номер вершины, а si — описание пути из этой вершины. Строка si содержит исключительно буквы 'L', 'R' и 'U', которые обозначают переход к левому сыну, переход к правому сыну и переход к родительской вершине соответственно. Символы в строке si следует обрабатывать последовательно слева направо, считая стартовой вершину ui. Если переход невозможен, то его следует проигнорировать. Ответом на запрос является номер вершины, в которой будет завершен путь si.

Например, если ui = 4 и si = «UURL», то ответом будет вершина 10.

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

В первой строке входных данных содержатся два целых числа n и q (1 ≤ n ≤ 1018, q ≥ 1). Значение n таково, что n + 1 является степенью числа 2.

Следующие 2q строк содержат описания запросов парами строк. Первая из них содержит целое число ui (1 ≤ ui ≤ n), вторая — непустую строку si. Строка si содержит исключительно буквы 'L', 'R' и 'U'.

Гарантируется, что сумма длин строк si для всех i (1 ≤ i ≤ q) не превосходит 105.

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

Выведите q чисел, i-е из них должно быть равно ответу на i-й запрос.


Примеры
Входные данныеВыходные данные
1 15 2
4
UURL
8
LRLLLLLLLL
10
5

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

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