#dwango2017finala. [dwango2017final_a]計算ドリル
[dwango2017final_a]計算ドリル
問題文
ニコニコテレビちゃんは、頭の体操として簡単な計算をすることにしました。 ところでニコニコテレビちゃんは人間ではないので、逆ポーランド記法で計算をします。
具体的には、0
~ 9
, -
, +
からなる文字列 について、以下の規則に従い計算をします。
- まず、最初の時点では空の、無限に長いスタックを つ持っていると考える。そして、 の文字を前から見ていく。
- もし
0
~9
が出てきたら、そのままスタックへ積む。 - もし
+
が出てきたら、スタックから1個取り出し 、もう1個取り出し とする。そして をスタックへ積む。 - もし
-
が出てきたら、スタックから1個取り出し 、もう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+
と書き換えると、答えが最大になります