[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




この記事が気に入ったらサポートをしてみませんか?