結果

問題 No.3021 Maximize eval
ユーザー ID 21712
提出日時 2025-03-13 13:47:27
言語 Go
(1.23.4)
結果
AC  
実行時間 538 ms / 2,000 ms
コード長 781 bytes
コンパイル時間 12,671 ms
コンパイル使用メモリ 235,428 KB
実行使用メモリ 7,932 KB
最終ジャッジ日時 2025-03-13 13:47:48
合計ジャッジ時間 20,531 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 15
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import . "fmt"

func main() {
	var t int
	Scan(&t)
	for ; t > 0 ; t-- {
		var s string
		Scan(&s)
		b := []byte(s)
		minus := false
		mustnum := true
		for i, ch := range b {
			if ch != '?' {
				switch {
					case ch == '-':
						minus = true
						mustnum = true
					case ch == '+':
						minus = false
						mustnum = true
					case minus:
						mustnum = false
				}
				continue
			}
			switch {
				case minus && mustnum:
					b[i] = '1'
					mustnum = false
				case minus && !mustnum:
					if i+1<len(b)&&(b[i+1]!='-'&&b[i+1]!='+') {
						b[i] = '+'
						minus = false
						mustnum = true
					} else {
						b[i] = '1'
					}
				case !minus && mustnum:
					b[i] = '9'
				case !minus && !mustnum:
					panic("bug?")
			}
		}
		Println(string(b))
	}
}
0