Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
тудентка Марсианского университета Эми изучает в
рамках курса “Архаические БД и ЭС” пакет TopSpeed’s Clarion`™`
for Windows`™`, который появился на заре компьютерной
эры и основывался на широком использовании настраиваемых шаблонов
для быстрой разработки программ, а не объектно-ориентированного подхода,
который появился в то же время. Как и
в большинстве других языков программирования, программа на
языке Clarion состоит из набора ключевых и резервированных слов,
чисел, строковых констант, скобок, знаков операций и других лексем.
Регистр букв в ключевых и резервированных словах
и идентификаторах игнорируется. Между лексемами можно
вставлять произвольное количество пробелов.
Конец строки завершает оператор. Слишком длинный оператор можно
разбивать на несколько строк, указывая последним символом в
строке символ продолжения ‘|’ (вертикальная черта), но
лексему при этом нельзя разбивать на две части.
Строковые константы заключаются в апострофы, а апострофы в
строке удваиваются, например, ‘It’’s a string’. Элементы
окна или отчета описываются в программе в следующем виде:
тип_элемента[(параметры)],AT(`X`, `Y`[,[`W`],[`H`]])[, свойство[(параметры)]]…
В качестве параметров могут быть указаны строки (или конкатенация строк),
числа, форматы, идентификаторы переменных. Свойство AT задает
координаты `X` и `Y` элемента (координаты являются целыми
числами в диапазоне от 0 до 10000), а также, возможно, его ширину `W` и высоту `H`.
Описание других свойств элемента имеет аналогичную форму.
Для редактирования окон и отчетов в пакете применяются
специальные визуальные редакторы, генерирующие необходимые описания.
При работе с пакетом Эми обнаружила, что порядок описаний
элементов в структуре окон и отчетов зависит от порядка
добавления элементов в редакторе. Это является существенным
недостатком, если требуется скопировать некоторую связанную
группу элементов в другое окно или отчет. Напишите программу,
выполняющую сортировку описаний элементов по возрастанию координаты `Y`,
а затем `X`. При совпадении `Y` и `X` оставить описания
элементов в порядке их следования во входном файле.
Во входном файле содержится от 1 до 1000 строк длиной
не более 80 символов – набор синтаксически корректных описаний элементов
окна или отчета. Некоторые описания могут быть разбиты на
несколько строк (не более 10 строк).
В выходной файл вывести упорядоченные по возрастанию
координаты `Y`, а затем `X` описания элементов, при этом
содержание строк не должно измениться, только их порядок.
Пример ввода
STRING('(описание вып. работ, оказанных услуг)'),AT(2,84,|
62,5),FONT(,8,,),USE(?String29:2),TRN,CENTER,#ORIG(?String29)
LINE,AT(29,68,227,0),USE(?Line24),COLOR(00H),#ORIG(?Line24)
STRING(@s50),AT(136,69,106,6),USE(GLB_OPLSPB),TRN,#ORIG(GLB_OPLSPB)
STRING('Сумма налога'),AT(168,84),FONT(,8,,),USE(?String94),|
TRN,#ORIG(?String94)
Вывод для примера
LINE,AT(29,68,227,0),USE(?Line24),COLOR(00H),#ORIG(?Line24)
STRING(@s50),AT(136,69,106,6),USE(GLB_OPLSPB),TRN,#ORIG(GLB_OPLSPB)
STRING('(описание вып. работ, оказанных услуг)'),AT(2,84,|
62,5),FONT(,8,,),USE(?String29:2),TRN,CENTER,#ORIG(?String29)
STRING('Сумма налога'),AT(168,84),FONT(,8,,),USE(?String94),|
TRN,#ORIG(?String94)