eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Застрявший робот

Застрявший робот

Робот застрял среди обломков межзвездного космического корабля. Где-то среди обломков есть телепорт, который может доставить бедного робота в безопасное место.

Космический корабль выходит из-под контроля по всем осям. Ближайшее солнце освещает обломки. Корабль также оснащен генератором искусственной гравитации. Искусственная гравитация всегда уводит робота от солнца, независимо от ориентации корабля.

Робот оснащен солнечными панелями и должен использовать солнечную энергию, чтобы двигаться через обломки. Когда часть обломков загораживает солнце, робот неподвижен. Однако робот всегда закрепляется после каждого движения и не рискует разбиться или упасть в пустоту космоса.

Обломки и территория вокруг них представлены трехмерной сеткой a размера m * n * p. Каждый отдельный блок может быть либо частью корабля, либо пустотой. Блоки корабля можно разъединять.

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

Говоря более формально, гравитация может тянуть робота в одном из 6 направлений: 2 направлений вдоль каждой из 3 осей. Ячейка освещена солнцем, если нет обломков от этой ячейки в направлении, противоположном силе тяжести. Перед каждым движением робот может эффективно выбирать направление, в котором его притягивает сила тяжести. При совершении хода и исходная, и конечная позиция должны одновременно освещаться солнцем.

Разрешены следующие ходы: (свет всегда светит сверху на следующих изображениях; синий блок (или более темный блок в черно-белых распечатках) представляет робота, а оранжевые блоки (или более светлые блоки) - возможные пункты назначения)

  • Перемещение по полу Если робот покоится на вершине блока, он может переместиться в соседнее положение при условии, что он находится на той же высоте.

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

prb11284.gif

  • Прыжок со скалы Робот может сделать шаг с возвышения и затем упасть. Нет ограничений от того, как долго длится падение.

Робот не может упасть в пустоту космоса или в неосвещенное место.

prb11284_1.gif

  • Падение вниз Если робот освещен солнцем и окажется висящим, он может упасть. Это может произойти, если направление силы тяжести изменилось.

Робот не может упасть в пустоту космоса.

prb11284_2.gif

Цель состоит в том, чтобы добраться до телепорта, если это вообще возможно, используя наименьшее количество ходов. Чтобы телепорт работал, робот должен быть прочно прикреплен к кораблю. Другими словами, робот должен оказаться у телепорта в конце разрешенного хода, и спуститься через него не получится. Телепорт не блокирует ни солнце, ни движение робота.

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

Первая строка содержит три целых числа m, n, p (1m, n, p* 500*).

Космический корабль и область вокруг космического корабля описываются p блоками.

k-й блок описывает блок, расположенный на k-й высоте. Каждый блок состоит из n строк.

i-я строка k-го блока состоит из m символов. j-й символ называется aijk.

  • Если aijk равно "*", то это полный блок.
  • Если aijk равно "-", то это пустой блок.
  • Если aijk равно "R", то этот блок содержит робота. Гарантируется, что такой блок только один.

Гарантируется, что робот находится возле полного блоку. - Если aijk равно "T", то этот блок содержит телепорт. Гарантируется, что такой блок только один.

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

Выведите минимальное количество ходов, необходимое для достижения телепорта, или -1, если телепорт недоступен.

Ліміт часу 2 секунди
Ліміт використання пам'яті 128 MiB
Вхідні дані #1
2 5 1
R-
*-
*-
*T
**
Вихідні дані #1
1
Вхідні дані #2
3 2 1
R-T
***
Вихідні дані #2
2
Вхідні дані #3
3 3 1
-R-
-*-
-T-
Вихідні дані #3
-1
Вхідні дані #4
5 4 2
-R---
-****
-****
-****
-----
-----
*T---
----*
Вихідні дані #4
5