G:括号序列
时间:2 s
题目描述:
括号序列是指由 ‘(’ 和 ‘)’ 组成的序列,假如一个括号序列中,包含相同数量的左括号和右括号,并且对于每一个右括号,在他的左侧都有左括号和他匹配,则这个 括号序列就是一个合法括号序列,如(( ))( )就是一个合法括号序列,但(( ))(( )不是合法括号序列.
给出两个长度相同的合法括号序列 A 和 B , 那么 A < B 当且仅当:
A和B至少有一位不相同
在A和B从左往右数第一个不相同的位置i,A[i] = ( ,B[i]= ) ;
比如A = (( ))(), B = ( )( ) ( ), 则 A < B 。因为从左边数第一个不相同的是第二个字符,A[2] = ( , B[2] = )。对于长度 N,由于定义了小于关系,则可以通过这个关系推出所有长度为N的合法括号序列的大小关系,对于长度为6的合法括号序列,从小到大排列顺序如下:
((( )))
(()())
(( ))( )
( )(( ))
( )( )( )
给出 N 和 M, 求长度为 N 的合法括号序列中, 第 M 小的合法括号序列是?
输入
输入的第一行是 N 和 M
2 <= N <= 2000
1 <= M <= 10^18
输出
输出一个字符串,表示长度为 N 的平衡括号序列从小到大排列, 序号为 M 的字符串