#XMOJ10668. 前缀的括号序列

前缀的括号序列

说明

时间限制:1 Sec 内存限制:256 MB 输入文件parentheses.in 输出文件parentheses.out

“合法的括号序列”定义如下:

  1. 空字符串是合法的括号序列。

  2. 若字符串 ss 是合法的括号序列,则字符串 (s)(s) 也是合法的括号序列。

  3. 若字符串 sstt 均为合法的括号序列,则字符串 stst 也是合法的括号序列。

例如,()()(())(())()()()()(())()(())()(((())()()))(((())()())) 等均为合法的括号序列。

现给定一个由 (()) 组成、长度为 NN 的字符串 SS。对于 1iN1 \le i \le N,将 SS 中从第 11 个字符到第 ii 个字符的连续子串记为SiS_i

S1,S2,,SNS_1, S_2, \cdots, S_N 这些子串,按任意顺序拼接得到字符串 TT。定义 f(T)f(T) 为“TT 的子序列中,属于正确括号序列的字符串的最大长度”。这里“子序列”是指从 TT 中删除部分字符后,剩余字符保持原有顺序拼接而成的字符串。

请找出 f(T)f(T) 的最大值。

输入格式

第一行一个整数 NN

第二行一个由 (()) 组成、长度为 NN 的字符串 SS

输出格式

一个整数,表示 f(T)f(T) 的最大值。

样例

样例 1

3
)((

4

样例说明:各子串定义如下:S1=)S_1=)S2=)(S_2=)(S3=)((S_3=)((

  1. 若按 S2+S1+S3S_2 + S_1 + S_3 的顺序拼接,得到的字符串 T=)())((T=)())((。在 TT 的所有子序列中,属于正确括号序列的字符串最大长度为 22,因此 f(T)=2f(T)=2

  2. 若按 S3+S1+S2S_3 + S_1 + S_2 的顺序拼接,得到的字符串 T=)(())(T=)(())(。在 TT 的所有子序列中,属于正确括号序列的字符串最大长度为 44,因此 f(T)=4f(T)=4

不存在能使 f(T)>4f(T) \gt 4TT,因此 f(T)f(T) 的最大值为 44

样例 2

3
)))

0

样例 3

10
(((()))()(

34

数据范围

对于 8% 的数据,N8N \le 8

对于 100% 的数据,1N1051 \le N \le 10^5