#415. 收集游戏

收集游戏

题目描述

给定一个长度为 nn 的正整数数组 aa 和一个分数。如果你的分数大于等于 aia_i,那么你可以将分数增加 aia_i 并从数组中移除 aia_i

对于每个下标 ii,输出在移除 aia_i 并将你的分数设为 aia_i 后,你最多还能移除多少个额外的数组元素。注意,移除 aia_i 的操作不计入答案。

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt1t50001 \leq t \leq 5000)——表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5)——表示数组的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091 \le a_i \le 10^9)——表示数组的元素。

保证所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每个测试用例,输出 nn 个整数,第 ii 个整数表示如果移除 aia_i 并将分数设为 aia_i 后,最多还能移除多少个额外的数组元素。

输入输出样例

4
5
20 5 1 4 2
3
1434 7 1442
1
1
5
999999999 999999999 999999999 1000000000 1000000000
4 3 0 3 1 
1 0 2 
0 
4 4 4 4 4

说明/提示

在第一个测试用例中,答案如下:

如果我们从 i=4i=4 开始,初始分数为 a4=4a_4=4,数组 a=[20,5,1,2]a=[20,5,1,2]。我们可以按如下顺序移除 33 个额外元素:

  1. 由于 414 \ge 1,可以移除 11,分数变为 55。此时 a=[20,5,2]a=[20,5,2]
  2. 由于 555 \ge 5,可以移除 55,分数变为 1010。此时 a=[20,2]a=[20,2]
  3. 由于 10210 \ge 2,可以移除 22,分数变为 1212。此时 a=[20]a=[20]

如果从 i=1i=1 开始,可以移除数组中所有剩余元素,因此答案为 44

如果从 i=2i=2 开始,可以按顺序移除 33 个额外元素:114422

如果从 i=3i=3 开始,无法移除任何额外元素。

如果从 i=5i=5 开始,可以移除 11 个额外元素:11

由 ChatGPT 4.1 翻译