#dwango2017finala. [dwango2017final_a]計算ドリル
[dwango2017final_a]計算ドリル
问题描述
尼可尼可电视台决定将简单的计算作为头脑体操。由于尼可尼可电视台并不是人类,所以它使用逆波兰表示法进行计算。
具体来说,对于由0
到9
、-
、+
组成的字符串,按照以下规则进行计算:
- 首先,在初始时刻,假设它有一个空的、无限长的堆栈。然后,从字符串的开头开始查看字符。
- 如果遇到
0
到9
,直接入栈。 - 如果遇到
+
,从栈中取出一个元素,再取出一个元素,然后将入栈。 - 如果遇到
-
,从栈中取出一个元素,再取出一个元素,然后将入栈。 - 最后,如果栈内只有一个元素,则它就是答案。
- 如果栈内的元素数量不为1,或者在中途取出元素时栈为空,则说明不是一个正确的表达式。
尼可尼可电视台随意写了一个字符串。除了简单地计算之外,它决定解决以下问题:
- 将这个字符串修改最多个字符,能否变成一个正确的表达式?如果可以,最大计算结果是多少?
然而,这太难了,所以请你帮助它解决。
约束条件
- 是由
0
到9
、-
、+
组成的字符串。
输入
输入以以下格式从标准输入中给出。
输出
如果不能形成一个正确的表达式,请输出 NG
。如果可以,则输出 OK
,并在接下来的一行中输出计算的最大结果。
输入例子1
0
21+
输出例子1
OK
3
这个表达式正常写法是2+1
输入例子2
1
21+
输出例子2
OK
11
将其修改为29+
,可以得到最大答案。
输入例子3
1
21-
输出例子3
OK
8
将其修改为91-
,可以得到最大答案。
输入例子4
0
1+1
输出例子4
NG
这样的表达式不是一个逆波兰表示法的正确表达式。
输入例子5
3
1234567
输出例子5
OK
13
将其修改为12+4+6+
,可以得到最大答案。