AT_abc260_d [ABC260D] Draw Your Cards
题目描述
有一叠写有 $1$ 到 $N$ 的 $N$ 张卡牌,背面朝上叠放成一堆,从上往下第 $i$ 张卡牌上写着整数 $P_i$。
你需要用这叠卡牌进行如下操作,共进行 $N$ 回合:
- 从牌堆顶抽出一张卡牌,记其上写的整数为 $X$。
- 在场上所有正面朝上的卡牌中,找出所有写着整数大于等于 $X$ 的卡牌,选择其中写着整数最小的那一张,把刚抽出的卡牌正面朝上叠在它上面。如果没有这样的卡牌,则将抽出的卡牌正面朝上单独放在场上。
- 然后,如果场上有某一堆正面朝上的卡牌数量达到 $K$ 张,则把这堆卡牌全部“吃掉”,即从场上移除。
请你求出每张卡牌在第几回合被吃掉,如果直到最后都没有被吃掉,则输出 $-1$。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $K$ $P_1$ $P_2$ $\dots$ $P_N$
输出格式
输出 $N$ 行。
第 $i$ 行输出如下内容,表示写有整数 $i$ 的卡牌的情况:
- 如果第 $i$ 张卡牌被吃掉,输出其被吃掉的回合数(整数)。
- 否则输出 $-1$。
说明/提示
## 限制条件
- 所有输入均为整数。
- $1 \leq K \leq N \leq 2 \times 10^5$
- $P$ 是 $1,2,\dots,N$ 的一个排列(即 $P$ 是 $1,2,\dots,N$ 的重排)。
## 样例解释 1
本例中,$P=(3,5,2,1,4), K=2$。
- 第 $1$ 回合,抽出写有 $3$ 的卡牌,场上没有其他卡牌,将其正面朝上放在场上。
- 第 $2$ 回合,抽出写有 $5$ 的卡牌,场上没有其他卡牌,将其正面朝上放在场上。
- 第 $3$ 回合,抽出写有 $2$ 的卡牌,场上有 $3$,$5$,其中 $3 \geq 2$ 且最小,将 $2$ 叠在 $3$ 上。
- 此时,$2$ 和 $3$ 叠成一堆,堆中有 $K=2$ 张卡牌,将这两张卡牌全部吃掉。
- 第 $4$ 回合,抽出写有 $1$ 的卡牌,场上只剩 $5$,$5 \geq 1$,将 $1$ 叠在 $5$ 上。
- 此时,$1$ 和 $5$ 叠成一堆,堆中有 $K=2$ 张卡牌,将这两张卡牌全部吃掉。
- 第 $5$ 回合,抽出写有 $4$ 的卡牌,场上没有其他卡牌,将其正面朝上放在场上。
- 写有 $4$ 的卡牌直到最后都没有被吃掉。
## 样例解释 2
当 $K=1$ 时,所有卡牌在被放到场上的回合就会被吃掉。
由 ChatGPT 4.1 翻译