printРабочее место участника

printЗадачи

212. TEX 2 Unicode

Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (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
Источник: IX командный чемпионат школьников Санкт-Петербурга по программированию
loading