一瞬罠があるのではと怖くなるやつ
問題概要
'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; }