AT_abc260_d.[ABC260D] Draw Your Cards

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一叠写有 11 到 NN 的 NN 张卡牌,背面朝上叠放成一堆,从上往下第 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

    5 2
    3 5 2 1 4

    输出#1

    4
    3
    3
    -1
    4
  • 输入#2

    5 1
    1 2 3 4 5

    输出#2

    1
    2
    3
    4
    5
  • 输入#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

说明/提示

限制条件

  • 所有输入均为整数。
  • 1≤K≤N≤2×1051 \leq K \leq N \leq 2 \times 10^5
  • PP 是 1,2,…,N1,2,\dots,N 的一个排列(即 PP 是 1,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 的卡牌,场上有 33,55,其中 3≥23 \geq 2 且最小,将 22 叠在 33 上。
  • 此时,22 和 33 叠成一堆,堆中有 K=2K=2 张卡牌,将这两张卡牌全部吃掉。
  • 第 44 回合,抽出写有 11 的卡牌,场上只剩 55,5≥15 \geq 1,将 11 叠在 55 上。
  • 此时,11 和 55 叠成一堆,堆中有 K=2K=2 张卡牌,将这两张卡牌全部吃掉。
  • 第 55 回合,抽出写有 44 的卡牌,场上没有其他卡牌,将其正面朝上放在场上。
  • 写有 44 的卡牌直到最后都没有被吃掉。

样例解释 2

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

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页