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 $ です。