CF思维联系–CodeForces -224C - Bracket Sequence
ACM思維題訓練集合
A bracket sequence is a string, containing only characters “(”, “)”, “[” and “]”.
A correct bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters “1” and “+” between the original characters of the sequence. For example, bracket sequences “()[]”, “([])” are correct (the resulting expressions are: “(1)+[1]”, “([1+1]+1)”), and “](” and “[” are not. The empty string is a correct bracket sequence by definition.
A substring s[l… r] (1?≤?l?≤?r?≤?|s|) of string s?=?s1s2… s|s| (where |s| is the length of string s) is the string slsl?+?1… sr. The empty string is a substring of any string by definition.
You are given a bracket sequence, not necessarily correct. Find its substring which is a correct bracket sequence and contains as many opening square brackets ?[? as possible.
Input
The first and the only line contains the bracket sequence as a string, consisting only of characters “(”, “)”, “[” and “]”. It is guaranteed that the string is non-empty and its length doesn’t exceed 105 characters.
Output
In the first line print a single integer — the number of brackets ?[? in the required bracket sequence. In the second line print the optimal sequence. If there are more than one optimal solutions print any of them.
Examples
Input
([])
Output
1
([])
Input
(((
Output
0
括號是就近匹配的,所以可以用棧來模擬,所以可以將括號壓棧,匹配后出棧,最后棧底剩余的就是不能出棧的就是不能匹配的,一般的方法是找到這些括號但是太費勁了,我們同時建立一個棧,同時入棧,出棧,存括號的下標,那么在出棧操作之后,第一個stack就只剩下不匹配的括號,第二個stack就只剩下不匹配的括號的下標。
下標將括號數(shù)組分成了好幾段,枚舉每一段的左中括號的數(shù)量即可,比較最大值更新左右段點即可
總結(jié)
以上是生活随笔為你收集整理的CF思维联系–CodeForces -224C - Bracket Sequence的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 史无前例!Jeep角斗士皮卡大“甩卖”:
- 下一篇: 快手指纹识别在哪里