[AGC063] A - Mex Game
[Q] https://atcoder.jp/contests/agc063/tasks/agc063_a
考察
・AliceはBの文字を埋めたいし、BobはAの文字を埋めたい。
・両者それぞれ、先頭に近い相手の文字を埋めていけばいい。
・解答は、埋まっていない先頭文字が"A"ならAliceだし、"B"ならBobになる。
実装
int main() {
cincout();
ll N;
string S;
cin >> N >> S;
queue<ll> A, B;
rep(i, N + 1) {
if (S[i] == 'A') {
A.push(i);
} else {
B.push(i);
}
}
// 番兵
A.push(oo);
B.push(oo);
rep(i, N) {
if (i % 2 == 0) { // AliceはBを埋める
if (B.front() != oo) {
B.pop();
}
} else if (i % 2 == 1) { // BobはAを埋める
if (A.front() != oo) {
A.pop();
}
}
// AかBの近いほうを選ぶことになる
if (A.front() < B.front()) {
cout << "Alice" << endl;
} else {
cout << "Bob" << endl;
}
}
}
https://atcoder.jp/contests/agc063/submissions/44111009