AT_abc337_f [ABC337F] Usual Color Ball Problems
题目描述
### 题目翻译
你现在手上有 $n$ 个排成一列的球、 $m$ 个盒子。每个球有一种颜色。
现在你需要对于每个 $0\le x< n$,执行以下操作:
1. 将第一个球移动至序列末尾。该操作将执行 $x$ 次。
2. 从前往后处理每个球,假设当前球的颜色为 $c$。具体地,我们通过以下步骤来把球放到盒子里:
> 1. 如果存在一个非空盒子 $y$,这个盒子里的所有球颜色为 $c$ 并且这个盒子里球的个数小于 $k$,你应当将球放入 $y$ 号盒子中。
>2. 如果不存在 (1) 中所述情况,但是存在一个盒子为空,你应当将球放进一个空盒子里。
> 3. 如果不存在 (1)、(2) 中所述情况,你应当将这个球吃掉。
3. 当序列中没有球之后(所有球都被放进盒子里或吃掉后),输出**盒子里**的球的数量。
询问之间互不影响,所有盒子一开始都是空的。
输入格式
第一行三个正整数 $n,m,k$,含义如题所示。
接下来一行 $n$ 个正整数 $c_i$ 表示序列中第 $i$ 个球的颜色。
输出格式
对于每个 $0\le x
说明/提示
### 制約
- 入力される値はすべて整数
- $ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ M,\ K\ \leq\ N $
- $ 1\ \leq\ C_i\ \leq\ N $
### Sample Explanation 1
例として、$ r\ =\ 1 $ の場合の手順を説明します。 まず「列の先頭のボール $ 1 $ 個を列の最後尾に移動する」ことを $ 1 $ 回行い、ボールの色の列は $ (2,\ 3,\ 5,\ 2,\ 5,\ 4,\ 1) $ となります。 その後、ボールを箱に入れていく操作を下記の通りに行います。 - $ 1 $ 回目の操作:先頭のボールの色は $ 2 $ です。色 $ 2 $ のボールが $ 1 $ 個以上 $ 2 $ 個未満入った箱は存在しないため、先頭のボールを空の箱のうち番号が最小の箱 $ 1 $ に入れます。 - $ 2 $ 回目の操作:先頭のボールの色は $ 3 $ です。色 $ 3 $ のボールが $ 1 $ 個以上 $ 2 $ 個未満入った箱は存在しないため、先頭のボールを空の箱のうち番号が最小の箱 $ 2 $ に入れます。 - $ 3 $ 回目の操作:先頭のボールの色は $ 5 $ です。色 $ 5 $ のボールが $ 1 $ 個以上 $ 2 $ 個未満入った箱も空の箱も存在しないため、先頭のボールを食べます。 - $ 4 $ 回目の操作:先頭のボールの色は $ 2 $ です。色 $ 2 $ のボールが $ 1 $ 個以上 $ 2 $ 個未満入った箱として箱 $ 1 $ が存在するため、先頭のボールを箱 $ 1 $ に入れます。 - $ 5 $ 回目の操作:先頭のボールの色は $ 5 $ です。色 $ 5 $ のボールが $ 1 $ 個以上 $ 2 $ 個未満入った箱も空の箱も存在しないため、先頭のボールを食べます。 - $ 6 $ 回目の操作:先頭のボールの色は $ 4 $ です。色 $ 4 $ のボールが $ 1 $ 個以上 $ 2 $ 個未満入った箱も空の箱も存在しないため、先頭のボールを食べます。 - $ 7 $ 回目の操作:先頭のボールの色は $ 1 $ です。色 $ 1 $ のボールが $ 1 $ 個以上 $ 2 $ 個未満入った箱も空の箱も存在しないため、先頭のボールを食べます。 最終的に箱に入っているボールの総数は $ 3 $ 個であるので、$ r\ =\ 1 $ の問題の答えは $ 3 $ です。