AT_agc072_b [AGC072B] AGC Language
Description
An AGC word is a string of length at least $ 2 $ that contains the same number of `A`’s and `C`’s, and in every prefix, `A`’s make up at least half of the characters. You are given a string $ S $ of length $ 2N $ consisting of $ N $ `A`’s and $ N $ `C`’s. For each $ k = 1, 2, \dots, K $ , answer the following question.
> A blackboard shows a string that is a concatenation of $ k $ copies of $ S $ . To turn it into an AGC word, perform the operations below in the order written:
>
> 1. Perform **exactly once**:
> - Choose integers $ (l, r) $ $ (1 \le l \le r \le 2kN) $ and reverse the $ l $ -th through $ r $ -th characters of the string.
> 2. Perform **zero or more times**:
> - Swap two adjacent characters of the string.
>
> What is the minimum number of swaps required?
Notes on prefixA string $ Y $ is a prefix of $ X $ if and only if $ 1 \le |Y| \le |X| $ and the first $ |Y| $ characters of $ X $ equal $ Y $ . For example, `ATC` is a prefix of `ATCODER`, but `AGC` and `ATCODERGRANDCONTEST` are not.
Input Format
The input is given from Standard Input in the following format:
> $ N $ $ K $ $ S $
Output Format
Print $ K $ lines. The $ i $ ‑th line $ (1 \le i \le K) $ should contain the answer for $ k = i $ .
Explanation/Hint
### Sample Explanation 1
For $ k = 1 $ , the initial string is `AC`;
For $ k = 2 $ , it is `ACAC`.
Both are already AGC words, so choosing, say, $ (l, r) = (1, 1) $ yields $ 0 $ swaps.
### Sample Explanation 2
For $ k = 1 $ , the string is `CACAAACCCA`. By following the steps below, the sequence needs only one swap:
1. Choose $ (l, r) = (1, 4) $ and reverse the $ 1 $ -st through $ 4 $ -th characters. The string is now `ACACAACCCA`.
2. Swap the $ 9 $ -th and $ 10 $ -th characters. The string is now `ACACAACCAC`, which is an AGC word.
### Constraints
- $ 1 \le N \le 1\,000\,000 $
- $ 1 \le K \le 300\,000 $
- $ S $ is a length‑ $ 2N $ string consisting of $ N $ `A`’s and $ N $ `C`’s.
- $ N $ and $ K $ are integers.