結果
| 問題 |
No.2278 Time Bomb Game 2
|
| コンテスト | |
| ユーザー |
SSRS
|
| 提出日時 | 2023-04-21 21:45:42 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,846 bytes |
| コンパイル時間 | 1,752 ms |
| コンパイル使用メモリ | 174,480 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-06 15:15:03 |
| 合計ジャッジ時間 | 4,560 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 36 WA * 34 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main(){
int N, K, T;
cin >> N >> K >> T;
vector<char> c(N);
for (int i = 0; i < N; i++){
cin >> c[i];
}
bool f = false;
if (c[K] == 'B'){
f = true;
for (int i = 0; i < N; i++){
c[i] ^= 'A' ^ 'B';
}
}
vector<int> a;
for (int i = 0; i < N; i++){
if (c[i] == 'A'){
a.push_back(i);
}
}
string ans;
if (c == vector<char>(N, 'A')){
ans = "Bob";
} else {
int L = K, R = K;
while (L > 0){
if (c[L - 1] == 'A'){
L--;
} else {
break;
}
}
while (R < N - 1){
if (c[R + 1] == 'A'){
R++;
} else {
break;
}
}
if (R - L >= 1){
if (L > 0 && T > K - L && T % 2 == (K - L) % 2){
ans = "Alice";
} else if (R < N - 1 && T > R - K && T % 2 == (R - K) % 2){
ans = "Alice";
} else {
ans = "Bob";
}
} else {
if (T % 2 == 0){
ans = "Bob";
} else {
ans = "Bob";
if (K != N - 1){
auto itr = upper_bound(a.begin(), a.end(), K);
if (itr == a.end()){
ans = "Alice";
} else if (*itr - K == 2){
ans = "Alice";
} else if (*itr - K > T || (*itr - K) % 2 != T % 2){
ans = "Alice";
}
}
if (K != 0){
auto itr = lower_bound(a.begin(), a.end(), K);
if (itr == a.begin()){
ans = "Alice";
} else {
itr--;
if (K - *itr == 2){
ans = "Alice";
} else if (K - *itr > T || (K - *itr) % 2 != T % 2){
ans = "Alice";
}
}
}
}
}
}
if (f){
if (ans == "Bob"){
ans = "Alice";
} else {
ans = "Bob";
}
}
cout << ans << endl;
}
SSRS