[BalticOI 2005] Magic Parenthesis
题目背景
合法括号串的定义:
- `()` 是合法的
- 如果 `A` 是合法的,那么 `(A)` 是合法的
- 如果 `A` 和 `B` 是合法的,那么 `AB` 是合法的
题目描述
给定一个长为 $N$ 的字符串 $S$,由 `(`,`)` 和 `]` 组成。
整个字符串中有 $M$ 个 `]`,其他全为左右括号。
现在得知可以用若干个 `)` 来替换 `]`,求一种通过替换 $S$ 中的 `]` 得到合法括号串的做法。
输入输出格式
输入格式
第一行两个整数 $N,M$ 代表字符串的长度与 `]` 的个数。
第二行 $N$ 个字符代表字符串 $S$。
输出格式
如果无解,输出 `0` 并结束程序。
如果有解,首先输出一个 `1`,然后接下来 $M$ 行每行一个整数代表每一个 `]` 要替换多少成个 `)`。
输入输出样例
输入样例 #1
8 2
(((((])]
输出样例 #1
1
3
1
说明
#### 样例说明
对于样例 $1$,按照输入替换后得到的 $S$ 为 `((((()))))`,为合法括号串。
#### 数据规模与约定
对于 $100\%$ 的数据,$0 \le N \le 10^7$,$0 \le M \le 5 \times 10^6$,$M \le N$。
**本题使用 Special Judge。**
感谢 spj 提供者 @[tiger2005](https://www.luogu.com.cn/user/60864)。
#### 说明
翻译自 [BalticOI 2005 Day1 B Magic Parenthesis](https://boi.cses.fi/files/boi2005_day1.pdf)。