#aBC260Did373. [ABC260D] Draw Your Cards

[ABC260D] Draw Your Cards

AT_abc260_d [ABC260D] Draw Your Cards

题目描述

有一叠写有 11NNNN 张卡牌,背面朝上叠放成一堆,从上往下第 ii 张卡牌上写着整数 PiP_i

你需要用这叠卡牌进行如下操作,共进行 NN 回合:

  • 从牌堆顶抽出一张卡牌,记其上写的整数为 XX
  • 在场上所有正面朝上的卡牌中,找出所有写着整数大于等于 XX 的卡牌,选择其中写着整数最小的那一张,把刚抽出的卡牌正面朝上叠在它上面。如果没有这样的卡牌,则将抽出的卡牌正面朝上单独放在场上。
  • 然后,如果场上有某一堆正面朝上的卡牌数量达到 KK 张,则把这堆卡牌全部“吃掉”,即从场上移除。

请你求出每张卡牌在第几回合被吃掉,如果直到最后都没有被吃掉,则输出 1-1

输入格式

输入通过标准输入给出,格式如下:

NN KK P1P_1 P2P_2 \dots PNP_N

输出格式

输出 NN 行。
ii 行输出如下内容,表示写有整数 ii 的卡牌的情况:

  • 如果第 ii 张卡牌被吃掉,输出其被吃掉的回合数(整数)。
  • 否则输出 1-1

输入输出样例 #1

输入 #1

5 2
3 5 2 1 4

输出 #1

4
3
3
-1
4

输入输出样例 #2

输入 #2

5 1
1 2 3 4 5

输出 #2

1
2
3
4
5

输入输出样例 #3

输入 #3

15 3
3 14 15 9 2 6 5 13 1 7 10 11 8 12 4

输出 #3

9
9
9
15
15
6
-1
-1
6
-1
-1
-1
-1
6
15

说明/提示

限制条件

  • 所有输入均为整数。
  • 1KN2×1051 \leq K \leq N \leq 2 \times 10^5
  • PP1,2,,N1,2,\dots,N 的一个排列(即 PP1,2,,N1,2,\dots,N 的重排)。

样例解释 1

本例中,P=(3,5,2,1,4),K=2P=(3,5,2,1,4), K=2

  • 11 回合,抽出写有 33 的卡牌,场上没有其他卡牌,将其正面朝上放在场上。
  • 22 回合,抽出写有 55 的卡牌,场上没有其他卡牌,将其正面朝上放在场上。
  • 33 回合,抽出写有 22 的卡牌,场上有 3355,其中 323 \geq 2 且最小,将 22 叠在 33 上。
  • 此时,2233 叠成一堆,堆中有 K=2K=2 张卡牌,将这两张卡牌全部吃掉。
  • 44 回合,抽出写有 11 的卡牌,场上只剩 55515 \geq 1,将 11 叠在 55 上。
  • 此时,1155 叠成一堆,堆中有 K=2K=2 张卡牌,将这两张卡牌全部吃掉。
  • 55 回合,抽出写有 44 的卡牌,场上没有其他卡牌,将其正面朝上放在场上。
  • 写有 44 的卡牌直到最后都没有被吃掉。

样例解释 2

K=1K=1 时,所有卡牌在被放到场上的回合就会被吃掉。

由 ChatGPT 4.1 翻译