AT_abc469_c [ABC469C] Cantrip
题目描述
给定一个长度为 $N$ 的字符串 $S$,仅包含字符 `o` 和 `x`。
有 $N$ 个袋子排成一排,每个袋子里都有一颗糖果。
对于第 $i$ 个袋子,如果 $S$ 的第 $i$ 个字符是 `o`,则袋子上写有“hit”;如果是 `x`,则写有“miss”。
对于每个 $k=1,2,\dots,N$,解决以下问题:
> 高桥从队列的最前面拿到前 $k$ 个袋子,吃掉里面的糖果,并保留这些袋子。
> 然后,他尽可能多地重复以下操作:
>
> - 扔掉一个自己持有的写有“hit”的袋子,再从队列的最前面拿走一个袋子,吃掉里面的糖果,并保留该袋子。只有当队列中还有剩余的袋子,并且自己手里还有写有“hit”的袋子时,才能进行此操作。
>
> 计算他最多可以吃到多少颗糖果。
> 注意,每当他拿到一个袋子时,该袋子会从队列中移除。
输入格式
输入由标准输入按以下格式给出:
> $N$ $S$
输出格式
输出共 $N$ 行。
第 $l$ 行应输出当 $k=l$ 时的答案。
说明/提示
### 样例解释 1
对于 $k=1$,他拿到的袋子上写有“hit”。他丢弃它,然后拿到的袋子上写有“miss”,因此无法继续操作。
### 约束条件
- $1 \leq N \leq 8 \times 10^5$
- $N$ 是整数。
- $S$ 是一个长度为 $N$ 只包含 `o` 和 `x` 的字符串。
由 ChatGPT 5 翻译