因为将左括号看作 $1$,右括号看作 $-1$ 时,合法括号序列总和一定为 $0$,所以当选择的区间总和非 $0$ 时,长度一定有上界。当总和等于 $0$ 时,端点选择前缀和最小值的位置即可找到任意长度的合法括号序列。只需要前缀和判断,时间复杂度 $O(N+Q)$。
当长度有限时,设总和为 $s$,不妨设 $s>0$(通过翻转并取反),且除空前缀外的前缀和严格大于 $0$(通过循环移位)。这时如果一个子串跨过了两段的端点,则一定不可能是合法括号序列,因为端点之后的所有位置的前缀和都严格大于端点。因此这时合法括号序列子串直接就是原串的子串,不需要复制。
观察:这时极长的合法括号序列一定满足右端点是后缀最小值,左端点是下一个(靠左边的)后缀最小值 $+1$。
问题转化为了求所有后缀最小值之间的最大间隔,可以用倍增预处理后求解。注意上面考虑的都是循环移位之后的,实际我们可以看作将序列复制一遍之后求解,注意跨过端点的时候需要做一次特殊的询问($R$ 之前第一个前缀和等于 $x$ 的位置),也可以用倍增求解。时间复杂度 $O((N+Q)\log N)$。