#4586. Draw Your Cards

0

Draw Your Cards

Draw Your Cards

题目描述

有一副由 NN 张面朝下的卡片组成的牌堆,上面分别写着 11 到 NN 的整数。 从顶部数第 ii 张卡片上写着的整数是 PiP_i。 使用这副牌,你将执行 NN 次操作,每次操作包含以下步骤:

抽取牌堆最顶部的卡片。 设 XX 为其上写的整数。 将抽取的卡片面朝上,叠放到桌上那些面朝上且在最上面的卡片中,写着的整数大于或等于 XX 的卡片中整数最小的一张上。如果桌上没有这样的卡片,则将抽取的卡片面朝上放在桌上,而不叠放到任何卡片上。 然后,如果桌上存在由 KK 张面朝上的卡片构成的一叠,则吃掉所有那些卡片。 被吃掉的卡片都会从桌上消失。

对于每一张卡片,找出是哪一次的第 NN 次操作吃掉了它。 如果该卡片直到结束都没有被吃掉,则报告该情况。

输入格式

输入从标准输入给出,格式如下: NN KK P1P_1 P2P_2 …\dots PNP_N

输出格式

输出 NN 行。
第 ii 行(1≤i≤N1 \le i \le N)应描述写有整数 ii 的那张卡片。 具体地,

如果写有 ii 的卡片在第 xx 次操作中被吃掉,则输出 xx; 如果该卡片在任何操作中都未被吃掉,则输出 −1-1。

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

提示

输入中的所有数值均为整数。 1≤K≤N≤2×1051 \le K \le N \le 2 \times 10^5 PP 是 (1,2,…,N)(1,2,\dots,N) 的一个置换(即通过重新排列 (1,2,…,N)(1,2,\dots,N) 得到的序列)。在此输入中,P=(3,5,2,1,4)P=(3,5,2,1,4) 且 K=2K=2。

在第 11 次操作中,写有 33 的卡片被放到桌上,面朝上,未叠放到任何卡片上。 在第 22 次操作中,写有 55 的卡片被放到桌上,面朝上,未叠放到任何卡片上。 在第 33 次操作中,写有 22 的卡片被面朝上叠放到写有 33 的卡片上。 现在有一叠由 K=2K=2 张面朝上的卡片构成,最上面写着 22,下面写着 33,因此这些卡片被吃掉了。

在第 44 次操作中,写有 11 的卡片被面朝上叠放到写有 55 的卡片上。 现在有一叠由 K=2K=2 张面朝上的卡片构成,最上面写着 11,下面写着 55,因此这些卡片被吃掉了。

在第 55 次操作中,写有 44 的卡片被放到桌上,面朝上,未被叠放到任何卡片上。 写有 44 的卡片直到结束都没有被吃掉。
如果 K=1K=1,每张卡片在放到桌上后会在同一次操作中立即被吃掉。

标签: AtCoder|abc260D

来源

AtCoder|abc260D