はまやんはまやんはまやん

hamayanhamayan's blog

swapAB列 [yukicoder No.559]

https://yukicoder.me/problems/no/559

解説放送

準備中

解法

https://yukicoder.me/submissions/199794

愚直に左にAを移動させていく。
leはAを左に移動させる時に移動させる位置を指す。
i番目がもし'A'であるならば、これをleの位置に動かすには(i - le)回動かす必要がある。
そして、leはインクリメントされる。
これを繰り返せば答えが得られる。

string S;
int N;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> S;
    N = S.length();

    int ans = 0;
    int le = 0;
    rep(i, 0, N) {
        if (S[i] == 'A') {
            ans += i - le;
            le++;
        }
    }
    cout << ans << endl;
}