https://coderun.yandex.ru/problem/corrupted-xml/description | Средняя |
---|
Формат XML является распространённым способом обмена данными между различными программами. Недавно программист Иванов написал небольшую программу, которая сохраняет некоторую важную информацию в виде XML-строки.
XML-строка состоит из открывающих и закрывающих тегов.
Открывающий тег начинается с открывающей угловой скобки ( < < ), за ней следует имя тега — непустая строка из строчных букв латинского алфавита, а затем закрывающая угловая скобка ( > > ). Примеры открывающих тегов: < < a > > , < < dog > > .
Закрывающий тег начинается с открывающей угловой скобки, за ней следует прямой слеш (/), затем имя тега — непустая строка из строчных букв латинского алфавита, а затем закрывающая угловая скобка. Примеры закрывающихся тегов: < < /a > > , < < /dog > > .
XML-строка называется корректной, если она может быть получена по следующим правилам:
• Пустая строка является корректной XML-строкой.
• Если A и B — корректные XML-строки, то строка AB, получающаяся приписыванием строки B в конец строки A, также является корректной XML-строкой.
• Если A — корректная XML-строка, то строка < < X > > A < < /X > > , получающаяся приписыванием в начало A открывающегося тега, а в конец — закрывающегося с таким же именем, также является корректной XML-строкой. Здесь X — любая непустая строка из строчных букв латинского алфавита.
Например, представленные ниже строки: < < a > > < < /a > > < < a > > < < ab > > < < /ab > > < < c > > < < /c > > < < /a > > < < a > > < < /a > > < < a > > < < /a > > < < a > > < < /a > > являются корректными XML-строками, а такие строки как: < < a > > < < /b > > < < a > > < < b > > < < a > > < < b > > < < /a > > < < /b > > не являются корректными XML-строками.
Иванов отправил файл с сохраненной XML-строкой по электронной почте своему коллеге Петрову. Однако, к сожалению, файл повредился в процессе пересылки: ровно один символ в строке заменился на некоторый другой символ.
Требуется написать программу, которая по строке, которую получил Петров, восстановит исходную XML-строку, которую отправлял Иванов.
Ввод:
<a></b>Вывод:
<b></b>
Ввод:
<a><aa>Вывод:
<a></a>
Ввод:
<a><>a>Вывод:
<a></a>
Ввод:
<a/</a>Вывод:
<a></a>