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

Рабочий стол

Рабочий стол

На рабочем столе операционной системы расположено \textbf{N} ярлыков, каждый из которых задан целыми координатами \textbf{x} и \textbf{y}, а также названием. Название ярлыка состоит из маленьких символов латинского алфавита (\textbf{a-z}). Необходимо перейти (т.е. переместить выделение) с выделенного ярлыка \textbf{S} к ярлыку \textbf{F}, с помощью клавиатуры, использовав наименьшее возможное количество нажатий. Переход осуществляется с помощью нажатий на клавиши с буквами \textbf{a-z}, либо на стрелки "↑","↓","←" и "→". При нажатии на клавиши с буквами переход происходит по следующим правилам: \begin{enumerate} \item Если на рабочем столе находятся ярлыки, название которых начинается на нажатую букву, и выделен один из них, то переход происходит на ярлык, с названием, следующим в лексикографическом порядке среди тех, которые начинаются на эту букву (после последнего выделение переходит на первый). Т.е. если есть ярлыки \textbf{a}, \textbf{ab}, \textbf{b}, то при нажатии \textbf{a} выделение будет переходить только между \textbf{a} и \textbf{ab}. \item Если название текущего ярлыка не начинается на выбранную букву, то выделение переходит на лексикографически наименьший ярлык, который начинается на нажатую букву. \item Если на рабочем столе нет ярлыков, название которых начинается на нажатую букву, переход не осуществляется. \end{enumerate} \includegraphics{https://static.e-olymp.com/content/63/63a6e829e37f0d4a535243d1effc3b206a53b2c6.jpg} При нажатии на стрелку переход происходит на ближайший в обычном геометрическом смысле ярлык, который лежит в секторе стрелки. Определим сектор стрелки как прямой угол с вершиной в выделенном ярлыке, биссектрисой которого есть луч, соответствующий стрелке. Если ярлык лежит на границе сектора, то он относится к верхнему или нижнему сектору (а не к правому или левому). Если в определенном секторе нет ни одного ярлыка, то переход не осуществляется. Если ближайших ярлыков несколько, то выбирается ярлык с наименьшей \textbf{x} координатой, а если и таких несколько, то выбирается с наименьшей \textbf{y}-координатой. Например, если выделен ярлык \textbf{a} (см. рисунок), то при нажатии стрелок могут произойти такие переходы: \begin{enumerate} \item Стрелка "←". Выделение переходит на ярлык \textbf{b}, т.к. он есть ближайшим в секторе этой стрелки. При последующем нажатии "←" будет выделен ярлык \textbf{c}. \item Стрелка "↑". В секторе стрелки находятся ярлыки \textbf{d} и \textbf{e}. Выделение перейдет на \textbf{d}, который ближе. \item Стрелка "→". В секторе "→" находится только ярлык \textbf{g}, на который и перейдет выделение. \item Стрелка "↓". В этом секторе находятся ярлыки \textbf{f} и \textbf{h}, которые равноудалены от ярлыка \textbf{a}. Выделение переходит на ярлык \textbf{h}, т.к. \textbf{x}-координата этого ярлыка меньше. Если после этого нажать "↓", то выделение остается на \textbf{h}, т.к. в секторе снизу нет ни одного ярлыка. \end{enumerate} Напишите программу DESKTOP, которая по информации о названиях ярлыков и об их расположении определит наименьшее возможное количество нажатий клавиатуры, с помощью которых можно из выбранного ярлыка достичь целевого. \InputFile Первая строка входного файла содержит три целых числа: \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{1000}) -- количество ярлыков на рабочем столе, \textbf{S} (\textbf{1} ≤ \textbf{S} ≤ \textbf{N}) -- номер выбранного ярлыка, \textbf{F} (\textbf{1} ≤ \textbf{F} ≤ \textbf{N}) -- номер ярлыка на который требуется перейти. Каждая из последующих \textbf{N} строк задает ярлык в формате "\textbf{x y text}", \textbf{x}, \textbf{y} -- целые числа (\textbf{0} ≤ \textbf{x}, \textbf{y} ≤ \textbf{10^6}), а текст содержит не более чем \textbf{50}, и не менее чем один маленький символ латинского алфавита \textbf{a-z}. Никакие два ярлыка не имеют одинаковых координат и одинаковых названий. Координатная сетка -- стандартная, т.е. "↑" увеличивается \textbf{y}-координата, а "→" \textbf{x}-координата. \OutputFile Единственная строка выходного файла должна содержать одно целое число -- минимальное количество нажатий на клавиатуру, которые позволят перейти от ярлыка \textbf{S} к ярлыку \textbf{F}.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
8 1 4
5 4 a
2 3 b
3 2 h
0 3 c
4 6 d
7 6 e
7 2 f
9 6 g
Выходные данные #1
1