#HK3150. 「CEOI2016」匹配

「CEOI2016」匹配

题目描述

译自 CEOI2016 Day2 T1「Match」

我们定义一个合法的括号序列是如下之一:

  • 一个空串;
  • 串 (B),其中 B 是一个合法的括号序列;
  • LR,两个合法的括号序列 L 和 R 直接拼接而成得到的串。

令 BB 是一个长度为 NN 的合法括号序列。定义 BiB_i 是序列 BB 中第 ii 个字符。对于两个下标 i,ji,j,其中 1≤i<j≤N1\le i<j\le N,我们称 BiB_i 和 BjB_j 是匹配的括号,如果满足:

  • Bi=(B_i=\texttt{(} 且 Bj=)B_j=\texttt{)};
  • i=j−1i=j-1,或者子序列 C=Bi+1Bi+2…Bj−1C=B_{i+1}B_{i+2}\ldots B_{j-1} 是合法的括号序列。

令 SS 是一个只包含小写英文字母的字符串。我们定义 SiS_i 是 SS 串中第 ii 个字符。我们称一个合法的括号序列 BB 和 SS 匹配,如果满足:

  • BB 的长度和 SS 相等;
  • 对于任意下标 i,ji,j 对,且 i<ji<j。如果 BiB_i 和 BjB_j 是匹配的,那么 Si=SjS_i=S_j。

对于给定长度为 NN 的 SS 串,请找到字典序最小的合法括号序列,满足和 SS 匹配。如果这样的括号序列不存在,输出 −1-1。

输入格式

输入一行一个长度为 NN 且只包含小写英文字母的串 SS。

输出格式

输出长度为 NN 的,和 SS 匹配且字典序最小的合法括号序列,如果这样的括号序列不存在,输出 −1-1。

abbaaa

(()())

另一个合法的括号序列是 (())(),但是这不是字典序最小的解。

abab

-1

没有合法的括号序列能够匹配给定串。

数据范围与提示

对于全部数据,2≤N≤1052\le N\le 10^5。

  • 对于其中 1010 分的测试点,N≤18N\le 18。
  • 对于另外 2727 分的测试点,N≤2×103N\le 2\times 10^3。

如果存在一个下标 i (1≤i≤N)i\ (1\le i\le N),满足对于所有 j<ij<i,都有 Aj=BjA_j=B_j,且 Ai<BiA_i<B_i,我们就称括号序列 AA 的字典序小于括号序列 BB。

字符 (\texttt{(} 的字典序小于字符 )\texttt{)}。