AGC029-A irreversible operation

解法はみんな書いてるので、最も答えの値が大きくなるのはどんな場合か考えてみましょう。

まず白い石の個数Xを固定したときに、白い石と黒い石を交換できる回数が最も多くなるような石の配置を考えます。
これは白い石がすべて右詰めで置かれている場合です。

次に、Xの値と|S|の値がどのような関係にあると、答えの値が最大になるかを考えます。
白い石がすべて右詰めに置かれているとき、交換回数の最大値は (黒い石の個数)×(白い石の個数)=(|S| - X) × X で表されます。
あとは二次関数とか相加相乗平均とかを使えば、答えの値が最大になるのは X = |S| / 2 のときであることが分かります。
(|S|が奇数のときは X = (|S| + 1) / 2 または (|S| - 1) / 2)

今回の問題では |S| ≦ 200000という制約があったので、最も答えの値が大きくなるのは|S| = 200000、 ('W'の個数) = 100000、 ('B'の個数) = 100000 で、すべての'W'がすべての'B'より右側に置かれている場合であり、答えは(200000 - 100000) * 100000 = 10^10となります。

C++のint型では2^32 ≅ 10^9までしか表せないので、オーバーフローの要因となります。この問題では long int などを用いましょう。
(12/18訂正)2^32 ではなく 2^32 - 1までです