結果
問題 | No.2278 Time Bomb Game 2 |
ユーザー |
![]() |
提出日時 | 2023-04-12 22:43:44 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,243 bytes |
コンパイル時間 | 1,996 ms |
コンパイル使用メモリ | 195,376 KB |
最終ジャッジ日時 | 2025-02-12 05:21:01 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 33 WA * 37 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; // Alice なら true, Bob なら false bool solve(int N, int K, int T, string S) { // Alice 視点にする if (S.at(K) == 'B') { for (int i = 0; i < N; i++) { S.at(i) = S.at(i) == 'A' ? 'B' : 'A'; } return solve(N, K, T, S); } if ((K != 0 && S.at(K - 1) == 'A') || (K != N - 1 && S.at(K + 1) == 'A')) { int l = -1, r = -1; // 左右それぞれで初めて出現する 'B' の位置 for (int i = K - 1; i >= 0; i--) { if (S.at(i) == 'B') { l = i; break; } } for (int i = K + 1; i < N; i++) { if (S.at(i) == 'B') { r = i; break; } } if (l != -1 && K - l <= T && (K - l) % 2 == T % 2) return true; if (r != -1 && r - K <= T && (r - K) % 2 == T % 2) return true; return false; } else { if (T % 2 == 0) return false; if (K != 0 && solve(N, K - 1, T - 1, S)) return true; if (K != N - 1 && solve(N, K + 1, T - 1, S)) return true; return false; } } int main() { int N, K, T; string S; cin >> N >> K >> T >> S; K--; cout << (solve(N, K, T, S) ? "Alice" : "Bob") << endl; }