QOJ.ac

QOJ

Límite de tiempo: 1.0 s Límite de memoria: 512 MB Puntuación total: 100 Hackeable ✓

#7525. 括号

Estadísticas

在编写一段非常重要的代码时,程序员 John 使用了自动更正工具来删除表达式中所有多余的括号。不幸的是,该工具意外地删除了 John 本不打算修改的代码行中的所有括号,导致程序无法编译。

在 John 恢复了原始版本后,他产生了一个新的想法。考虑以下简化版的编程语言:

  • 变量为单个小写英文字母:var = ['a'-'z']
  • 前置自增:preincr = ++var
  • 后置自增:postincr = var++ | preincr++
  • 操作数:operand = var | preincr | postincr | (operand)
  • 表达式:expr = operand | expr + expr

字符 | 用于分隔上述描述中的选项,它不会出现在表达式中。

John 想知道是否存在一种算法,对于任何此类去掉了括号的表达式,能够通过添加括号来重构该表达式,使得解析该表达式时不存在歧义。具体来说,生成的表达式必须是合法的,并且对于每一个 + 号,我们都应该能够唯一地确定它是加法运算符、前置自增运算符还是后置自增运算符,以及每个自增操作是作用于哪个变量的。请帮助他找到一种添加括号的方法。

输入格式

输入的第一行包含一个非空字符串,由 ‘a’ 到 ‘z’ 之间的字母和 + 号组成,且不存在两个连续的字母(即所有变量名长度均为 1)。字符串长度不超过 $10^6$。

你可以假设该字符串是一个按照题目描述的编程语言编写的正确表达式。

输出格式

在单行中输出通过添加括号重构后的表达式,使得其中包含的所有前置自增和后置自增操作都能被唯一确定。该表达式必须符合题目描述的编程语言规范。

括号对的数量不得超过变量的数量(即输入中英文字母的数量)。

如果存在多种解,输出其中任意一种即可。

样例

输入格式 1

x+++y

输出格式 1

(x++)+(y)

输入格式 2

q+u+++h+++++o+q++

输出格式 2

(q)+(u++)+(h++)+(++o)+(q++)

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.