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

Задача . E. Робот на доске 1


Задача

Темы: реализация *1600

Робот находится на клетчатой прямоугольной доске размера \(n \times m\) (\(n\) строк, \(m\) столбцов). Строки в доске пронумерованы от \(1\) до \(n\) сверху вниз, а столбцы — от \(1\) до \(m\) слева направо.

Робот умеет передвигаться из текущей клетки в одну из четырех соседних с ней по стороне.

Известна последовательность выполняемых роботом команд \(s\). Каждая команда обозначается одним из символов 'L', 'R', 'D' или 'U', и задает движение влево, вправо, вниз или вверх, соответственно.

Начать свое движение робот может в любой клетке. Команды робот выполняет, начиная с самой первой, строго в том порядке, в котором они перечислены в \(s\). Если робот перемещается за границу доски, он падает и ломается. Команда, приводящая к поломке робота, не считается успешно выполненной.

Задача робота — выполнить как можно больше команд, не упав с доски. Например, на доске \(3 \times 3\), начав исполнять последовательность действий \(s=\)«RRDLUU» («вправо», «вправо», «вниз», «влево», «вверх», «вверх») из центральной клетки, робот выполнит одну команду, после чего следующей командой выйдет за границу доски. Если же робот начнет движение из клетки \((2, 1)\) (вторая строка, первый столбец), то все команды будут успешно выполнены, и робот остановится в клетке \((1, 2)\) (первая строка, второй столбец).

Робот начинает из клетки \((2, 1)\) (вторая строка, первый столбец). Двигается вправо, вправо, вниз, влево, вверх и вверх. В этом случае он заканчивает в клетке \((1, 2)\) (первая строка, второй столбец).

Определите, с какой клетки роботу стоит начинать свое движение, чтобы выполнить как можно больше команд.

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

В первой строке записано целое число \(t\) (\(1 \leq t \leq 10^4\)) — количество наборов входных данных.

В следующих \(2t\) строках даны описания наборов входных данных.

В описании каждого набора входных данных первая строка содержит два целых числа \(n\) и \(m\) (\(1 \leq n, m \leq 10^6\)) — высоту и ширину поля, по которому перемещается робот. Во второй строке описания дана строка \(s\), состоящая исключительно из символов 'L', 'R', 'D' и 'U' — последовательность команд, исполняемых роботом. Строка имеет длину от \(1\) до \(10^6\) команд.

Гарантируется, что сумма длин \(s\) по всем наборам входных данных не превосходит \(10^6\).

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

Выведите \(t\) строк, каждая из которых содержит ответ на соответствующий набор входных данных. В качестве ответа выведите два целых числа \(r\) (\(1 \leq r \leq n\)) и \(c\) (\(1 \leq c \leq m\)), разделенные пробелом — координаты клетки (номер строки и номер столбца), из которой роботу следует начинать движение, чтобы выполнить как можно больше команд.

Если таких клеток несколько, выведите любую.


Примеры
Входные данныеВыходные данные
1 4
1 1
L
1 2
L
3 3
RRDLUU
4 3
LUURRDDLLLUU
1 1
1 2
2 1
3 2

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

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