結果
問題 | No.1439 Let's Compare!!!! |
ユーザー |
|
提出日時 | 2021-12-17 16:41:56 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 240 ms / 2,000 ms |
コード長 | 1,397 bytes |
コンパイル時間 | 15,093 ms |
コンパイル使用メモリ | 223,464 KB |
実行使用メモリ | 10,044 KB |
最終ジャッジ日時 | 2024-09-14 17:50:02 |
合計ジャッジ時間 | 19,654 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 17 |
ソースコード
package mainimport ("fmt""bufio""os")var S, T []intvar N, D, Diff intfunc main() {r := bufio.NewReader(os.Stdin)w := bufio.NewWriter(os.Stdout)defer w.Flush()fmt.Fscan(r, &N)var s, t stringfmt.Fscan(r, &s, &t)var Q intfmt.Fscan(r, &Q)S = make([]int, N)T = make([]int, N)D, Diff = 0, 0for i := 0; i < N; i++ {var cs, ct intcs = (int)(s[i]) - '0'ct = (int)(t[i]) - '0'S[i] = csT[i] = ctif cs != ct {if D == 0 {if cs > ct {D = i + 1} else {D = -i - 1}}Diff++}}for i := 0; i < Q; i++ {var c stringfmt.Fscan(r, &c)var x, y intfmt.Fscan(r, &x, &y)review(c[0], x, y)if D > 0 {fmt.Fprintln(w, ">")} else if D < 0 {fmt.Fprintln(w, "<")} else {fmt.Fprintln(w, "=")}}}func Abs(x int) int {if x >= 0 {return x} else {return -x}}func review(c byte, x int, y int) {if c == 'S' {if S[x-1] == y {return}S[x-1] = y} else {if T[x-1] == y {return}T[x-1] = y}if D == 0 || x < Abs(D) {if S[x-1] > T[x-1] {D = x} else {D = -x}Diff++} else if x == Abs(D) {D = 0if S[x-1] == T[x-1] {Diff--if Diff == 0 {return}}for i := x-1; i < N; i++ {if S[i] != T[i] {if S[i] > T[i] {D = i + 1} else {D = -i - 1}break}}} else {Diff++}}