/
Time Limit: 2 sec / Memory Limit: 1024 MiB
配点 : 400 点
問題文
6 種類の文字、(, ), [, ], <, > からなる文字列 S が与えられます。
ここで、文字列 T は、以下の条件を満たすときカラフル括弧列と呼ばれます。
以下の操作を何回か(0 回でも良い)繰り返すことで、T を空文字列にできる。
- T の(連続する)部分文字列であって、
(),[],<>のいずれかであるようなものが存在するとき、そのうちの 1 つを選んで削除する。- 削除された部分文字列が T の先頭または末尾であるとき、残りの文字列を新たに T とする。
- そうでないとき、削除された前後の文字列を 1 つに連結し、新たに T とする。
S がカラフル括弧列であるか判定してください。
制約
- S は長さ 1 以上 2\times 10^5 以下の文字列
- S は
(,),[,],<,>のみからなる。
入力
入力は以下の形式で標準入力から与えられる。
S
出力
S がカラフル括弧列ならば Yes を、そうでないならば No を出力せよ。
入力例 1
([])<>()
出力例 1
Yes
S=([])<>() に対して、次のように操作を繰り返すことで空文字列にすることができます。
([])<>()の 2 文字目から 3 文字目までをとった部分文字列[]を削除し、前後を連結する。文字列は新たに()<>()となる。()<>()の 1 文字目から 2 文字目までをとった部分文字列()を削除する。文字列は新たに<>()となる。<>()の 1 文字目から 2 文字目までをとった部分文字列<>を削除する。文字列は新たに()となる。()の 1 文字目から 2 文字目までをとった部分文字列()を削除する。文字列は空文字列となる。
よって、S=([])<>() はカラフル括弧列であるため、Yes を出力します。
入力例 2
([<)]>
出力例 2
No
S=([<)]> は (), [], <> を部分列として含まないため、1 回目の操作を行うことができず、特に S はカラフル括弧列ではありません。よって、No を出力します。
入力例 3
())
出力例 3
No
S に対して操作を繰り返し、空文字列とすることはできません。
よって、S はカラフル括弧列ではないため、No を出力します。
Score : 400 points
Problem Statement
You are given a string S consisting of six types of characters: (, ), [, ], <, >.
A string T is called a colorful bracket sequence if it satisfies the following condition:
It is possible to turn T into an empty string by repeating the following operation any number of times (possibly zero):
- If there exists a contiguous substring of T that is one of
(),[], or<>, choose one such substring and delete it.- If the deleted substring was at the beginning or end of T, the remainder becomes the new T.
- Otherwise, concatenate the part before the deleted substring and the part after the deleted substring, and that becomes the new T.
Determine whether S is a colorful bracket sequence.
Constraints
- S is a string of length between 1 and 2\times 10^5, inclusive.
- S consists of
(,),[,],<,>.
Input
The input is given from Standard Input in the following format:
S
Output
If S is a colorful bracket sequence, print Yes; otherwise, print No.
Sample Input 1
([])<>()
Sample Output 1
Yes
For S=([])<>(), it is possible to turn it into an empty string by repeating the operation as follows:
- Delete the substring
[]from the 2nd to the 3rd character in([])<>(), then concatenate the parts before and after it. The string becomes()<>(). - Delete the substring
()from the 1st to the 2nd character in()<>(). The string becomes<>(). - Delete the substring
<>from the 1st to the 2nd character in<>(). The string becomes(). - Delete the substring
()from the 1st to the 2nd character in(). The string becomes empty.
Thus, S=([])<>() is a colorful bracket sequence, so print Yes.
Sample Input 2
([<)]>
Sample Output 2
No
Since S=([<)]> does not contain (), [], or <> as a contiguous substring, we cannot perform the 1st operation, and in particular S is not a colorful bracket sequence. Therefore, print No.
Sample Input 3
())
Sample Output 3
No
It is impossible to turn S into an empty string by repeating the operations.
Therefore, S is not a colorful bracket sequence, so print No.