Чтобы защитить свою страну от набегов кочевников, президент Флатландии решил построить Великую Флатландскую Стену. Страна Флатландия представляет собой координатную плоскость, ее столица находится в точке (0, 0). Именно из столицы и планируется начать строительство стены. Министру внутренних дел срочно поручили составить план постройки стены.
План постройки стены представляет собой последовательность инструкций строителям. Инструкции бывают следующего вида:
<направление строительства> <длина>
<направление перемещения> <расстояние>
В первом случае строители возводят стену указанной длины от точки, где они находятся, в указанном направлении. Во втором случае строители перемещаются на указанное расстояние в указанном направлении, не возводя при этом стены
Направление строительства задается заглавной латинской буквой, а направление перемещения – строчной латинской буквой. Соответствие букв направлениям приведено в следующей таблице:
Буква | Направление | Вектор |
N n | Север | (0, 1) |
E e | Восток | (1, 0) |
S s | Юг | (0, -1) |
W w | Запад | (-1, 0) |
Длина и перемещение задаются в километрах и представляют собой целые числа.
Однако оказалось, что план министра может оказаться невыполнимым – в некоторый момент строители при выполнении инструкции могут столкнуться с уже построенной ими стеной! Выясните, выполним ли план министра и если нет, выведите координаты точки, в которой впервые произойдет столкновение с уже построенной стеной.
На первой строке входного файла расположено число N – количество инструкций в плане министра (0 N 1000). Последующие N строк содержат инструкции плана. Их формат следующий: сначала идет одна из допустимых букв, заглавная буква означает, что следует строить стену, а строчная – что следует просто переместиться. Затем, отделенное от буквы ровно одним пробелом, идет целое число Xi - какой длины следует строить стену, либо на сколько надо переместиться (1 Xi 106).
На первой строке выходного файла выведите yes, если план можно выполнить, либо no, если нельзя. План можно выполнить, если строители, которых будем считать материальной точкой, никогда не оказываются в точке, через которую проходит участок стены, отличный от того, который они сейчас строят или только что построили (считаем стену состоящей из отрезков). В случае отрицательного ответа выведите на второй строке координаты точки, в которой произойдет столкновение со стеной, сначала X, затем Y. Числа должны быть разделены пробелом.
4 n 10 e 10 s 10 w 10
YES
4 n 10 e 10 s 10 W 10
YES
В городе, где живет Петя имеется N перекрестков, некоторые из которых соединены улицами (каждая улица соединяет ровно два перекрестка). В этом городе имеется только один вид общественного транспорта – автобус. Правда, имеется целых два кольцевых автобусных маршрута.
Маршрут можно задать в виде последовательности перекрестков, по которым он проходит, при этом после последнего перекрестка автобус едет к первому. В каждом маршруте любой перекресток встречается не более одного раза.
Пете повезло, он живет на единственной улице в городе, по которой ходит оба маршрута. Выясните, на какой улице живет Петя.
Первая строка входного файла содержит число N – количество перекрестков в городе, в котором живет Петя (3 N 30000). Следующие две строки содержат описание маршрутов в следующем формате: сначала идет Ki – количество перекрестков, через которые проходит маршрут (3 Ki N), затем перечислены эти перекрестки в том порядке, в котором их посещает автобус соответствующего маршрута. Числа в строках разделены одним или несколькими пробелами.
Выведите в выходной файл номера перекрестков, которые соединяет улица, на которой живет Петя, в возрастающем порядке.
6 6 1 2 3 4 5 6 6 1 5 3 6 4 2
1 2
Главная улица столицы Флатландии представляет собой прямоугольник с вершинами в точках
(0, 0), (0, 2), (N, 2), (N, 0). Ночью во Флатландии был сильный снегопад и теперь на некоторых единичных квадратиках улицы лежит снег.
Снегоуборочная машина представляет собой отрезок длины 1, изначально расположеный так, что его концы имеют координаты (K, 0) и (K, 1). Снегоуборочная машина может за 1 секунду переместиться в горизонтальном направлении на 1, при этом ее отрезок «заметает» клетку. Если на этой клетке был снег, то он исчезает. Кроме того, машина может мгновенно переместиться на 1 вверх или вниз (при этом отрезок перемещается по прямой, на которой он лежит).
Поскольку по главной улице скоро поедет машина президента Флатландии, необходимо как можно скорее убрать снег. Выясните, за какое время это можно сделать и приведите последовательность действий машины, которая позволяет убрать снег за это время.
Первая строка входного файла содержит N и K (1 N 1000, 0 K N). Следующие N строк содержат по два числа каждая, первое число i+1-й строки равно 1, если на клетке (i, 0) лежит снег и 0 в противном случае. Второе число показывает, есть ли снег на клетке (i, 1).
На первой строке выходного файла выведите количество секунд, которое потребуется, чтобы убрать снег. На следующей строке выведите последовательность действий снегоуборочной машины в следующем формате: каждое действие обозначается заглавной буквой латинского алфавита, соответствие букв действиям приведено в слудующей таблице:
Буква | Действие |
R | переместиться вправо на клетку (на вектор (1, 0) ) |
L | переместиться влево на клетку (на вектор (-1, 0) ) |
U | переместиться вверх (на вектор (0, 1) ) |
D | переместиться вниз (на вектор (0, -1) ) |
В процессе работы машина не должна выходить за пределы дороги. Конечное положение машины может быть любым.
4 0 0 1 1 1 0 1 0 1
6 UDURDURDLRURDURDU
4 0 1 0 0 1 0 1 1 0
4 UDRURDURDRU
Петя построил из карт домик, подобный тому, что изображен на рисунке. В нижнем ряду находится 2N карт.
Однако не успел Петя выйти из комнаты, как его младший брат Ваня подбежал к домику и вытащил одну из карт. В результате некоторые карты оказались в неустойчивом положении и осыпались. После этого еще несколько карт оказались неустойчивыми и осыпались. Этот процесс продолжался, пока не оказалось, что все оставшиеся карты стоят устойчиво. Когда Петя вошел в комнату. он с ужасом увидел, что от его домика осталось лишь жалкое подобие былого величия, а кучка карт лежит на столе.
После небольшой разборки Пете удалось выяснить, какую карту вытащил Ваня из его домика. Помогите Пете определить, сколько карт осыпалось в его домике, не считая их.
Формализуем некоторые понятия:
Скажем, что горизонтальная карта стоит устойчиво, если ее с обеих сторон подпирает хотя бы одна наклонная карта. Скажем, что наклонная карта стоит устойчиво, если снизу ее хотя бы с одной стороны подпирает горизонтальная карта, либо она стоит на столе, а сверху ее подпирает парная ей наклонная карта. Все остальные карты стоят неустойчиво.
Первая строка входного файла содержит число N (1 N 30000). Вторая строка содержит описание вынутой Ваней карты: первый символ – одна из букв H или V – задает направление карты в исходном домике (горизонтальное или наклонное соттветственно), затем следуют два числа – номер ряда, в котором лежала карта, считая сверху, начиная с 1 (счет ведется отдельно для горизонтальных и вертикальных рядов), и номер карты в этом ряду, считая слева, начиная с 1. Числа отделены от символа, задающего направление, и друг от друга пробелами.
Выведите в выходной файл единственное число – количество осыпавшихся карт (не считая вытащенной Ваней).
3 V 1 1
1
3 V 2 1
4
4 H 3 2
0
Во многих современных приложениях используется двухбайтовая таблица символов Unicode. В отличии от однобайтовой ASCII, в Unicode на один символ приходится не один, а два байта. Благодаря этому, в Unicode могут быть представлены не 256, а 65536 различных символов, что позволяет без пересечений включить в таблицу символы различных алфавитов.
Однако большинство систем обработки текстов по историческим причинам используют ASCII, при этом возникают проблемы с символами национальных алфавитов: в различных кодировках символы с одним и тем же кодом ASCII отвечают различным сиволам.
Чтобы обойти эту проблему, разработчики различных систем обработки текстов вводят различные кодовые последовательности для обозначения символов национальных алфавитов. В этой задаче вам предлагается осуществить перевод текста, написанного для системы TEX, в Unicode. Сразу отметим, что модель, предлагаемая в данной задаче упрощенная и не вполне соответствует действительности.
В TEX-е для включения в текст символа национального алфавита используется команда \IeC. Каждому символу национального алфавита ставится в соответстие некоторая последовательность латинских букв, например русской букве "п" ставится в соотвтствие посделовательность \cyrp, и эта последовательность записывается в фигурных скобках после команды \IeC. Так, чтобы включить в текст букву "п" надо написать \IeC{\cyrp}. Пробелы в кодовой последовательности не разрешаются.
Дан текст, оформленный в стиле TEX-а. Выведите в выходной файл последовательность Unicode-кодов символов текста. При этом все известные включения символов национальных алфавитов следует преобразовать в соответствующий Unicode-символ. Остальные символы, а также последовательности, отвечающие неизвестным символам, следует вывести неизменными (при переходе от ASCII к Unicode старший байт двухбайтового символа становится равным 0). Некоторые кодовые последовательности могут быть неправильными (например, содержать пробелы или иным способом не удовлетворять формату). Их тоже следует вывести неизменными.
Первая строка содержит число N – количество известных символов национальных алфавитов (1 N 100). Следующие N строк содержат кодовые последовательности этих символов и соответствующие коды символов Unicode (которые задаются как 2-байтовое число в 16-ричной системе счисления, записаны 4 символа), разделенные одним пробелом. Все кодовые последовательности начинаются с символа "\", за которым следует не более 10 латинских букв. После кодовых последовательностей следует текст, который следует обработать. Игнорируйте переводы строк (но не в кодовых последовательностях).
Выведите в выходной файл последовательность Unicode-кодов символов, которые будут составлять преобразванный файл. Каждый код должен представлять собой 16-ричное число, дополненное при необходимости ведущими нулями до 4 символов. Числа должны быть разделены пробелами и/или переводами строки.
4 \ARMA 0531 \arma 0561 \ARMB 0532 \armb 0562 Text in Armenian: \indexentry{\IeC{\arma}\IeC{\Arma} \IeC{\ARMA} \IeC{\armb}\IeC{\ARMB}}
0054 0065 0078 0074 0020 0069 006E 0020 0041 0072 006D 0065 006E 0069 0061 006E 003A 005C 0069 006E 0064 0065 0078 0065 006E 0074 0072 0079 007B 0561 005C 0049 0065 0043 007B 005C 0041 0072 006D 0061 007D 0531 0020 0562 0532 007D