0051. Меню

Input file name: input.txt
Output file name: output.txt
Time limit: 2 s
Memory limit: 64 megabytes

В компании "New Technologies" занимаются разработкой различного программного обеспечения. Для реализации одного нового проекта компании требуется модуль для работы с меню. У каждого пункта главного меню может присутствовать подменю, а у того, в свою очередь, собственное подменю и т.д.

При добавлении каждый пункт получает уникальный номер, который на единицу больше, чем номер предыдущего добавленного. Удаление пункта меню не влечет за собой освобождения занимаемого им номера. Таким образом, если у нас было 3 пункта, пронумерованных соответственно числами от 1-го до 3-х, а затем мы последовательно удалили элемент 3 и добавили новый, то последний получит номер 4. Нумерация пунктов меню начинается с 1.

Операции над меню ограничиваются следующим набором команд.

  • Insert S [X] - добавить новый пункт меню с названием S в самый низ подменю пункта с номером X
  • Delete X - удалить пункт с номером X и все подменю, зависящие от него
  • Up X - поднять пункт с номером X в текущем подменю вверх
  • Down X - опустить пункт с номером X в текущем подменю вниз
  • Move X [Y] - переместить пункт X в самый низ подменю пункта Y

Если в команде Insert не указан второй параметр, значит, добавлять элемент нужно в главное меню. Аналогично в команде Move требуется переместить пункт X в главное меню.

В команде Move не может быть указан номер пункта меню, зависящего от данного. Все некорректные операции игнорируются.

Напишите программу, которая выводит меню, заданное последовательностью из данных команд.

Формат входного файла

Входной файл содержит набор команд (не больше 200), описанных выше, по одной в строке. Название пункта меню не превышает 20 символов. Название пункта меню содержит латинские буквы, русские буквы в кодировке DOS (cp866) и цифры.

Формат выходного файла

В выходной файл нужно вывести меню в развернутом виде, т.е. за каждым пунктом меню следует его подменю.

Пример:

input.txtoutput.txt
Insert Правописание Insert Язык Insert Французский 1 Up 2 Down 1 Down 1 Insert Английский 2 Insert Русский 2 Move 3 2 Move 3 1 Move 3 2 Язык Английский Русский Французский Правописание


Source: Petrozavodsk training camp, Summer 2002. Magloy's contest :-)
Author: Magloy (Alexander Korol, Denis Vlasov, Roman Soshkin)

Discuss       Submit a solution



Printable version