結果
問題 |
No.3021 Maximize eval
|
ユーザー |
|
提出日時 | 2025-02-19 11:20:25 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 126 ms / 2,000 ms |
コード長 | 2,408 bytes |
コンパイル時間 | 621 ms |
コンパイル使用メモリ | 82,776 KB |
実行使用メモリ | 111,000 KB |
最終ジャッジ日時 | 2025-02-19 11:20:38 |
合計ジャッジ時間 | 4,020 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 15 |
ソースコード
import sys input = sys.stdin.readline def solve(): T = int(input().strip()) for _ in range(T): S = input().strip() n = len(S) res = [] # last_was_op: 直前が演算子なら True last_was_op = True # 最初は必ず数字で始まる # cur_sign: 現在作っている数が + なら 1, - なら -1 cur_sign = 1 for i, c in enumerate(S): if c != '?': res.append(c) if c == '+' or c == '-': last_was_op = True cur_sign = 1 if c == '+' else -1 else: last_was_op = False else: # c == '?' if last_was_op: # 数の先頭なので、数字を入れる必要がある if cur_sign == 1: res.append('9') else: res.append('1') last_was_op = False else: # 直前が数字の場合:数字を続けるか、演算子で区切るか if i == n - 1: # 最後の文字は必ず数字 res.append('9' if cur_sign == 1 else '1') last_was_op = False else: if cur_sign == 1: # 加算側なら、数字を続けて数を大きくする res.append('9') last_was_op = False else: # 減算側なら、可能ならここで数を区切って符号を正にリセット next_char = S[i+1] if next_char in '+-': # 次が演算子なら連続演算子になるので、数字(最小値)を入れる res.append('1') last_was_op = False else: # ここで区切り、'+' を入れて符号を正にする res.append('+') last_was_op = True cur_sign = 1 sys.stdout.write("".join(res) + "\n") if __name__ == '__main__': solve()