https://atcoder.jp/contests/abc210/tasks/abc210_b
解説
https://atcoder.jp/contests/abc210/submissions/24333088
シミュレーションして勝敗を決していこう。
先頭から順番に、高橋君、青木君の順番でカードを見ていき悪いカードを受け取った人が負けなので、その人を答える。
配列を0-indexed、つまり、0から始めた番号で見ている場合は、番号が偶数の時に高橋君の手番で、
奇数の場合は青木君の手番となる。
よって、先頭から見て最初に1が出てくる時の添え字の偶奇を使って答える。
注意としては、先頭から順番に見ていくので処理途中でプログラムを終了させる必要がある。
自分は関数として切ってreturnすることで処理を中断しているが、exit(0)みたいなものを使ってもいい。
int N; string S; //--------------------------------------------------------------------------------------------------- string solve() { rep(i, 0, N) if (S[i] == '1') { if (i % 2 == 0) return "Takahashi"; else return "Aoki"; } } //--------------------------------------------------------------------------------------------------- void _main() { cin >> N >> S; cout << solve() << endl; }