QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 64 MB Total points: 100

#17439. Magic Parenthesis

Statistics

在 LISP 编程语言中,所有内容都写在平衡的括号内 (LIKE THIS)。这意味着 LISP 代码有时会包含很长一段连续的右括号 )))...)。对于 LISP 程序员来说,让这些右括号 ) 的数量与左括号 ( 的数量完全对应是非常繁琐的。

为了防止此类语法错误,某些 LISP 方言引入了一种魔法右括号 ],它可以根据需要替代一个或多个右括号 ),以使左括号 ( 保持平衡。但这样一来,LISP 编译器就必须计算出每个魔法括号 ] 实际上替代了多少个右括号 )。该如何计算呢?

编写一个程序,给定一个由左括号、右括号 and 魔法括号组成的字符串,计算每个出现的魔法括号所对应的左括号数量(即它所替代的右括号数量)。如果存在多种解决方案,程序只需输出其中任意一种即可。

输入格式

第一行包含两个由空格隔开的整数 $0 \le N \le 10\,000\,000$ 和 $0 \le M \le 5\,000\,000$。第一个数 $N$ 是输入字符串的长度。第二个数 $M$ 是字符串中魔法右括号的数量。

输入字符串从第二行开始,长度为 $N$,由字符 ()] 组成。字符 ] 在该字符串中恰好出现 $M \le N$ 次。为了便于阅读,该字符串被分成多行,每行最多包含 72 个字符。

输出格式

第一行包含一个整数 01

数字 0 表示输入无法被平衡(例如,仅由单个魔法括号 ] 组成的字符串显然无法平衡)。在这种情况下,无需进一步输出。

数字 1 表示输入可以被平衡。在这种情况下,输出接下来的 $M$ 行。

这些额外行中的第 $1$ 行包含第 $1$ 个魔法括号 ] 在输入中所替代的右括号 ) 的数量 $C_1 \ge 1$。第 $2$ 行包含第 $2$ 个 ] 所对应的数量 $C_2 \ge 1$,依此类推。

如果存在多种使给定字符串平衡的方法,您的程序可以输出其中任意一种。

样例

输入格式 1

8 2
(((((])]

输出格式 1

1
3
1

说明

样例输入描述了一个长度为 8 的字符串,其中有 2 个魔法括号。样例输出展示了平衡该输入的一种方法:第一个魔法括号对应 3 个左括号(即替代 3 个右括号),第二个魔法括号对应 1 个左括号(即替代 1 个右括号)。

事实上,去掉魔法括号并替换后的字符串 (((((())))) 是完全平衡的,其中对应于魔法括号的右括号在下文中用下划线标出:((((()))))``。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.