F. Robot in the Maze

Codeforces
IDCF10157F
Time2000ms
Memory256MB
Difficulty
English · Original
Formal · Original
В некоторых комнатах лабиринта n × n расставлены указатели «север», «юг», «запад» и «восток». Остальные комнаты пусты. Робот стартует с некоторого поля и следует по указателям до тех пор, пока не выйдет из лабиринта или не попадёт на поле, в котором нет указателя. Стены в лабиринте отсуствуют, то есть робот может перейти на любое соседнее по стороне поле (или выйти из лабиринта, если он пошёл с края доски в соответствующую сторону). Требуется выяснить, что произойдёт с роботом: зациклится ли он, покинет ли доску или придёт на какое-то свободное поле доски (в этом случае требуется указать, на какое именно). Первая строка входных данных содержит одно целое число n, задающее размер лабиринта (1 ≤ n ≤ 100). Каждая из последующих n строк состоит из n символов, каждый символ описывает одну комнату. Если символ равен '_N_', двигаться надо на север, если символ равен '_E_' — на восток, если символ равен '_S_' — на юг, если символ равен '_W_' — на запад, если символ равен '_._', то в комнате нет указателя. Первая строка является самой северной, первый столбец — самым западным. В последней строке содержатся два целых числа R и C (1 ≤ R, C ≤ n) — номер (начиная с единицы) строки и столбца комнаты, из которой стартует робот. Если робот в результате движения по стрелке выходит из лабиринта, выведите 0, если он зацикливается, выведите  - 1, если он останавливается в какой-то комнате внутри лабиринта, выведите два целых числа — номер (начиная с 1) строки и столбца комнаты, в которой остановится робот. ## Входные Данные Первая строка входных данных содержит одно целое число n, задающее размер лабиринта (1 ≤ n ≤ 100).Каждая из последующих n строк состоит из n символов, каждый символ описывает одну комнату. Если символ равен '_N_', двигаться надо на север, если символ равен '_E_' — на восток, если символ равен '_S_' — на юг, если символ равен '_W_' — на запад, если символ равен '_._', то в комнате нет указателя. Первая строка является самой северной, первый столбец — самым западным.В последней строке содержатся два целых числа R и C (1 ≤ R, C ≤ n) — номер (начиная с единицы) строки и столбца комнаты, из которой стартует робот. ## Выходные Данные Если робот в результате движения по стрелке выходит из лабиринта, выведите 0, если он зацикливается, выведите  - 1, если он останавливается в какой-то комнате внутри лабиринта, выведите два целых числа — номер (начиная с 1) строки и столбца комнаты, в которой остановится робот. ## Примеры Входные данные5NNNNNWEESEEN.SEWNWWESSSSS3 3Выходные данные3 3Входные данные5NNNNNWEESEEN.SEWNWWESSSSS2 2Выходные данные-1Входные данные5NNNNNWEESEEN.SEWNWWESSSSS3 1Выходные данные-1Входные данные5NNNNNWEESEEN.SEWNWWESSSSS1 3Выходные данные0 [samples]
**Definitions** Let $ n \in \mathbb{Z} $ be the size of the grid ($1 \leq n \leq 100$). Let $ G = (g_{i,j})_{1 \leq i,j \leq n} $ be the grid, where each $ g_{i,j} \in \{ \text{'N'}, \text{'E'}, \text{'S'}, \text{'W'}, \text{'.'} \} $ denotes the direction or absence of a pointer in cell $ (i,j) $. Let $ (R, C) \in \{1, \dots, n\}^2 $ be the starting position of the robot. **Transition Function** Define the movement function $ \delta: \{1, \dots, n\}^2 \to \{1, \dots, n\}^2 \cup \{\text{out}, \text{stop}\} $: - If $ g_{i,j} = \text{'N'} $, then $ \delta(i,j) = (i-1, j) $ if $ i > 1 $, else $ \text{out} $. - If $ g_{i,j} = \text{'S'} $, then $ \delta(i,j) = (i+1, j) $ if $ i < n $, else $ \text{out} $. - If $ g_{i,j} = \text{'W'} $, then $ \delta(i,j) = (i, j-1) $ if $ j > 1 $, else $ \text{out} $. - If $ g_{i,j} = \text{'E'} $, then $ \delta(i,j) = (i, j+1) $ if $ j < n $, else $ \text{out} $. - If $ g_{i,j} = \text{'.'} $, then $ \delta(i,j) = \text{stop} $. **Objective** Simulate the path $ (r_0, c_0) = (R, C) $, $ (r_{k+1}, c_{k+1}) = \delta(r_k, c_k) $ for $ k \geq 0 $, until one of the following occurs: - $ \delta(r_k, c_k) = \text{out} $: output $ 0 $. - $ \delta(r_k, c_k) = \text{stop} $: output $ r_k, c_k $. - A state $ (r_k, c_k) $ repeats: output $ -1 $.
API Response (JSON)
{
  "problem": {
    "name": "F. Robot in the Maze",
    "description": {
      "content": "В некоторых комнатах лабиринта n × n расставлены указатели «север», «юг», «запад» и «восток». Остальные комнаты пусты. Робот стартует с некоторого поля и следует по указателям до тех пор, пока не выйд",
      "description_type": "Markdown"
    },
    "platform": "Codeforces",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "CF10157F"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "В некоторых комнатах лабиринта n × n расставлены указатели «север», «юг», «запад» и «восток». Остальные комнаты пусты. Робот стартует с некоторого поля и следует по указателям до тех пор, пока не выйд...",
      "is_translate": false,
      "language": "English"
    },
    {
      "statement_type": "Markdown",
      "content": "**Definitions**  \nLet $ n \\in \\mathbb{Z} $ be the size of the grid ($1 \\leq n \\leq 100$).  \nLet $ G = (g_{i,j})_{1 \\leq i,j \\leq n} $ be the grid, where each $ g_{i,j} \\in \\{ \\text{'N'}, \\text{'E'}, \\...",
      "is_translate": false,
      "language": "Formal"
    }
  ]
}
Full JSON Raw Segments