結果
問題 |
No.2278 Time Bomb Game 2
|
ユーザー |
![]() |
提出日時 | 2025-04-16 00:24:54 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,040 bytes |
コンパイル時間 | 414 ms |
コンパイル使用メモリ | 81,852 KB |
実行使用メモリ | 72,528 KB |
最終ジャッジ日時 | 2025-04-16 00:26:49 |
合計ジャッジ時間 | 6,452 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 39 WA * 31 |
ソースコード
n, k, t = map(int, input().split()) c = input().strip() # Precompute for each position the nearest B to the left and right (for Alice) left_B = [-1] * (n + 2) # 1-based right_B = [-1] * (n + 2) left_A = [-1] * (n + 2) right_A = [-1] * (n + 2) last = -1 for i in range(1, n+1): if c[i-1] == 'B': last = i left_B[i] = last last = -1 for i in range(n, 0, -1): if c[i-1] == 'B': last = i right_B[i] = last last = -1 for i in range(1, n+1): if c[i-1] == 'A': last = i left_A[i] = last last = -1 for i in range(n, 0, -1): if c[i-1] == 'A': last = i right_A[i] = last current_pos = k remaining = t while True: current_char = c[current_pos - 1] if remaining == 0: print('Alice' if current_char == 'B' else 'Bob') break if current_char == 'A': lb = left_B[current_pos] rb = right_B[current_pos] dl = current_pos - lb if lb != -1 else float('inf') dr = rb - current_pos if rb != -1 else float('inf') min_d = min(dl, dr) if min_d == float('inf'): print('Bob') break if min_d > remaining: print('Bob') break if dl <= dr: current_pos = lb else: current_pos = rb remaining -= min_d if remaining % 2 == 0: print('Alice') else: print('Bob') break else: la = left_A[current_pos] ra = right_A[current_pos] dl = current_pos - la if la != -1 else float('inf') dr = ra - current_pos if ra != -1 else float('inf') min_d = min(dl, dr) if min_d == float('inf'): print('Alice') break if min_d > remaining: print('Alice') break if dl <= dr: current_pos = la else: current_pos = ra remaining -= min_d if remaining % 2 == 0: print('Alice') else: print('Bob') break