AGC029 A - Irreversible operation
問題はこちら atcoder.jp
方針
題意の操作は,文字列 においてBW
をWB
にすることと同じです。また, がWW...WBB...B
となった時点で操作は終了します。
つまり,W
に注目すると, 回の操作で つのW
が つ左に動き, 中にW
が 個あるとき,一番うしろのW
が 番目に来た時点で操作が終了します。
中で 個目のW
が 番目にあるとき,これを 番目に移動させるためには 回の操作が必要です。
コード
#include <bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; vector<int> coor_w; for(int i=0; i<s.size(); i++){ if(s[i]=='W'){ coor_w.push_back(i); } } long long count=0; for(int i=0; i<coor_w.size(); i++){ count+=abs(coor_w[i]-i); } cout<<count<<endl; }