Official

B - chess960 Editorial by nok0


B, K, R それぞれについて、\(S\) の左から何番目がその文字かを求めれば与えられた条件を判定できます。

これは、文字ごとに配列を持って出現位置を管理すると簡単に調べられます。実装例も参考にしてください。


実装例(C++):

#include <bits/stdc++.h>
using namespace std;

int main() {
    const int n = 8;
    string s;
    cin >> s;
    map<char, vector<int>> mp;
    for(int i = 0; i < n; i++) {
        mp[s[i]].push_back(i);
    }
    bool ok = 1;
    ok &= mp['B'][0] % 2 != mp['B'][1] % 2;
    ok &= mp['R'][0] < mp['K'][0] and mp['K'][0] < mp['R'][1];
    cout << (ok ? "Yes\n" : "No\n");
}

posted:
last update: