Олимпиадный тренинг

Задача . F. Две скобочные последовательности


Вам задано две скобочные последовательности (не обязательно правильные) \(s\) и \(t\), состоящие только из символов '(' и ')'. Вы хотите построить кратчайшую правильную скобочную последовательность, которая содержит обе заданные скобочные последовательности в качестве подпоследовательностей (не обязательно подряд идущих).

Напомним, что такое правильная скобочная последовательность:

  • () является правильной скобочной последовательностью;
  • если \(S\) является правильной скобочной последовательностью, то (\(S\)) является правильной скобочной последовательностью;
  • если \(S\) и \(T\) являются правильными скобочными последовательностями, то \(ST\) (конкатенация \(S\) и \(T\)) тоже является правильной скобочной последовательностью.

Напомним, что подпоследовательностью строки \(s\) называется такая строка \(t\), которая получается из \(s\) при помощи удаления некоторого (возможно, нулевого) количества символов. Например, «coder», «force», «cf» и «cores» являются подпоследовательностями «codeforces», а «fed» и «z» — нет.

Входные данные

Первая строка входных данных содержит одну скобочную последовательность \(s\), состоящую из не более \(200\) символов '(' и ')'.

Вторая строка входных данных содержит одну скобочную последовательность \(t\), состоящую из не более \(200\) символов '(' и ')'.

Выходные данные

Выведите одну строку — кратчайшую правильную скобочную последовательность, которая содержит обе заданные скобочные последовательности как подпоследовательности (не обязательно подряд идущие). Если существует несколько возможных ответов, выведите любой.


Примеры
Входные данныеВыходные данные
1 (())(()
()))()
(())()()
2 )
((
(())
3 )
)))
((()))
4 ())
(()(()(()(
(()()()(()()))

time 2000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя