けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder AGC 029 A - Irreversible operation (300 点)

一瞬罠があるのではと怖くなるやつ

問題へのリンク

問題概要

'W' と 'B' で構成された文字列が与えられる。
"BW" を "WB" に置き換える変換を好きな回数行える。最大回数を求めよ。

考えたこと

問題の操作はつまりは 'W' を左に動かす操作と読み替えられる。

各 'W' に対して左側に 'B' が何個あるのかを足していけばいい。

#include <iostream>
#include <string>
using namespace std;


int main() {
    string S;
    cin >> S;
    long long n = S.size();
    long long res = 0;
    long long num = 0;
    for (long long i = 0; i < n; ++i) {
        if (S[i] == 'W') {
            res += num;
        }
        else {
            ++num;
        }
    }
    cout << res << endl;
}