#P16767. [GKS 2020 #F] ATM Queue

[GKS 2020 #F] ATM Queue

题目描述

NN 个人,编号为 11NN,正排成一队从 ATM 机上取钱。队列按编号升序排列。编号为 ii 的人想要取出金额 AiA_i。每个人每次最多能取出 XX 元。如果他们需要的钱超过 XX,就需要走到队尾重新排队等待下一次取款。一旦取够了所需金额,该人就会离开队列。

你需要找出所有人离开队列的顺序。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。

每个测试用例的第一行给出两个空格分隔的整数:队列中的人数 NN 以及一次操作最多能取出的金额 XX

下一行包含 NN 个空格分隔的整数 AiA_i

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是一个空格分隔的整数列表,表示所有人离开队列的顺序。

2
3 3
2 7 4
5 6
9 10 4 7 2
Case #1: 1 3 2
Case #2: 3 5 1 2 4

提示

在样例 #1 中,有 33 个人,一次最多取 33 元。过程的逐步描述如下:

  • 初始队列为 [1,2,3][1, 2, 3]。第 11 个人第一次取 22 元,取够后离开队列。
  • 此时队列变为 [2,3][2, 3]。第 22 个人想取 77 元,但第一次只能取 33 元,还需 44 元,因此他走到队尾重新排队。
  • 队列变为 [3,2][3, 2]。第 33 个人想取 44 元,第一次只能取 33 元,还需 11 元,因此他走到队尾重新排队。
  • 队列变为 [2,3][2, 3]。第 22 个人仍需要 44 元,第二次取 33 元,还需 11 元,等待下一次。
  • 队列变为 [3,2][3, 2]。第 33 个人取出剩余的 11 元后离开队列。
  • 队列变为 [2][2]。第 22 个人取出剩余的 11 元后离开队列。
  • 队列为空。

离开顺序为 [1,3,2][1, 3, 2]

在样例 #2 中,有 55 个人,一次最多取 66 元。过程的逐步描述如下:

  • 初始队列 [1,2,3,4,5][1, 2, 3, 4, 5]。第 11 个人取 66 元,还需 33 元,走到队尾。
  • 队列 [2,3,4,5,1][2, 3, 4, 5, 1]。第 22 个人取 66 元,还需 44 元,走到队尾。
  • 队列 [3,4,5,1,2][3, 4, 5, 1, 2]。第 33 个人取 44 元,取够后离开。
  • 队列 [4,5,1,2][4, 5, 1, 2]。第 44 个人取 66 元,还需 11 元,走到队尾。
  • 队列 [5,1,2,4][5, 1, 2, 4]。第 55 个人取 22 元,取够后离开。
  • 队列 [1,2,4][1, 2, 4]。剩余的人依次在第二次取款后离开。

离开顺序为 [3,5,1,2,4][3, 5, 1, 2, 4]

限制条件

1T1001 \le T \le 100

测试集 1

1N1001 \le N \le 100

1Ai1001 \le A_i \le 100

1X1001 \le X \le 100

测试集 2

最多 1010 个测试用例满足 1N1051 \le N \le 10^5。其余测试用例满足 1N1001 \le N \le 100

1Ai1091 \le A_i \le 10^9

1X1091 \le X \le 10^9

翻译由 DeepSeek V4 Pro 完成