Codeforces Round 416 (Div. 2) |
---|
Закончено |
Это интерактивная задача.
У Владика есть любимая игра, в которую он играет практически все свободное время.
Игровое поле представляет из себя матрицу n × m, клетки которого бывают трех типов:
Изначально игрок находится в левой верхней клетке с координатами (1, 1).
Игроку доступны 4 кнопки «U», «D», «L», «R», каждая из которых перемещает его в направлениях вверх, вниз, влево, вправо соответственно.
Но не все так просто! Друзья иногда играют в игру и меняют управление, поменять между собой можно кнопки «L» и «R», а также «U» и «D». То есть кнопка «L» может выполнять операцию кнопки «R», в таком случае кнопка «R» будет выполнять операцию кнопки «L». Операции, за которые отвечают «U» и «D», обмениваются таким же образом. Обратите внимание, что направления могут поменяться только в начале игры.
Помогите Владику пройти игру!
На первой строке через пробел задано два числа n и m (1 ≤ n, m ≤ 100) — количество строк и столбцов поля соответственно.
В каждой из последующих n строк содержится m символов, описывающих соответствующую строку поля. Возможные варианты символов описаны в условии задачи.
Гарантируется, что клетка с координатами (1, 1) будет обычной, а также существует путь из начальной клетки до конечной не содержащий смертельных клеток.
Вы можете сделать не более 2·n·m нажатий на кнопку.
Для нажатия на кнопку вы должны в отдельной строке вывести «U», «D», «L», «R». Обязательно требуется вывести перевод строки и сделать операцию flush. После сброса буфера необходимо считать ответ на запрос из входных данных. Ответом будет являться пара целых чисел x, y, записанных через пробел, — новая позиция игрока. В случае, когда не существует клетки по направлению, за которое отвечает нажатая кнопка, позиция игрока не поменяется. Если после очередного хода игрок проиграет, то есть перейдет в смертельную клетку, x и y будут равны - 1.
Если в результате очередного хода игрок окажется в конечной клетке либо проиграет, вы должны будете завершить работу программы.
Для сброса буфера вывода (то есть для операции flush) сразу после вывода направления и перевода строки можно сделать:
Взломы
Чтобы совершить взлом, вам потребуется использовать следующий формат:
n m swapLR swapUD
a_1
a_2
...
a_n
Где n, m – количество строк и столбцов у игрового поля. swapLR равно 1, в случае, когда направления «L» и «R» поменялись местами и 0 в обратном случае. swapUD равно 1, в случае, когда направления «U» и «D» поменялись местами и 0 в обратном случае. a1, a2, ..., an — описание соответствующих строк игрового поля.
4 3
...
**.
F*.
...
1 1
1 2
1 3
1 3
2 3
3 3
4 3
4 2
4 1
3 1
R
L
L
D
U
U
U
R
R
D
В первом тестовом примере все четыре направления обменялись местами со своими обратными. Протокол взаимодействия в более удобном формате:
Этот тест можно было бы представить во время взлома следующим образом:
4 3 1 1
...
**.
F*.
...
Название |
---|