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

printЗадачи

1510. Сортировка

Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

14139.jpg
тудентка Марсианского университета Эми изучает в рамках курса “Архаические БД и ЭС” пакет 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)
loading