Sparing w Programowaniu Politechnika Poznańska, 10.03.2007 |
Zadanie B - Nawiasy |
Zdefiniujmy poprawną sekwencję nawiasów w następujący sposób:
Dla przykładu, każda z poniższych sekwencji znaków jest poprawną sekwencją nawiasów:
(), [], (()), ([]), ()[], ()[()]
Natomiast poniższe sekwencje nie są poprawne:
(, [, ), )(, ([)], ([(]
Dana jest pewna sekwencja znaków '(', ')', '[', oraz ']'. Twoim zadaniem jest odnalezienie najkrótszej możliwej poprawnej sekwencji nawiasów, która zawiera sekwencję znaków podaną na wejściu jako podsekwencję. Przy czym łańcuch znaków a1a2...an jest nazywany podsekwencją łańcucha b1b2...bm, jeżeli istnieją takie indeksy 1 ≤ i1 < i2 < ... < in ≤ m, że aj=bij dla każdego 1 ≤ j ≤ n.
W pierszej linii znajduje się liczba D (1 ≤ D ≤ 100) określająca liczbę testów.
Każda linia wejścia zawiera jeden przypadek testowy. Test składa się najwyżej z 200 nawiasów (znaki '(', ')', '[' i ']'), które zostały umieszczone w jedej linii, bez żadnych dodatkowych znaków.
Dla każdej linii na wejściu na wyjściu wypisz jedną linię, która powinna zawierać minimalną możliwą poprawną sekwencję zawierającą podsekwencję wejściową.
Wejście1 ([(] |
Wyjście()[()] |