CF1490E.Accidental Victory

传统题 时间 2000 ms 内存 256 MiB 7 尝试 28 已通过 9 标签

Accidental Victory

题目描述

在 Berland 举办了一场锦标赛,共有 nn 名选手参加。编号为 ii 的选手拥有 aia_i 个筹码(ai1a_i \ge 1)。

锦标赛共进行 n1n-1 场比赛,比赛规则如下:

  • 每场比赛随机选择两名筹码数大于零的选手;
  • 筹码数较多的选手获胜(若筹码数相同,则随机决定胜者);
  • 获胜者获得失败者的所有筹码;

最后剩下筹码数大于零的选手即为锦标赛冠军。

锦标赛中所有的随机选择都是等概率且相互独立的。

例如,若 n=4n=4a=[1,2,4,3]a = [1, 2, 4, 3],则比赛过程可能为(实际过程可能不同):

  • 第一场比赛,选中了第一和第四名选手。第四名筹码更多,获胜并获得第一名的筹码。此时 a=[0,2,4,4]a = [0, 2, 4, 4]
  • 第二场比赛,选中了第三和第四名选手。两人筹码相同,随机决定第三名获胜。此时 a=[0,2,8,0]a = [0, 2, 8, 0]
  • 第三场比赛,选中了第二和第三名选手。第三名筹码更多,获胜并获得第二名的筹码。此时 a=[0,0,10,0]a = [0, 0, 10, 0]
  • 第三名选手成为锦标赛冠军。

锦标赛冠军将获得专属奖品。因此,裁判想提前知道哪些选手有机会获胜,即有非零概率成为冠军。请你找出所有有非零概率获胜的选手。

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。接下来是 tt 个测试用例。

每个测试用例的第一行包含一个正整数 nn1n2×1051 \le n \le 2 \times 10^5),表示锦标赛的选手数量。

每个测试用例的第二行包含 nn 个正整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091 \le a_i \le 10^9),表示每位选手拥有的筹码数。

保证所有测试用例中 nn 的总和不超过 2×1052 \times 10^5

输出格式

对于每个测试用例,输出有非零概率获胜的选手数量。下一行输出这些选手的编号,按升序排列。选手编号从 11 开始,顺序与输入一致。

说明/提示

由 ChatGPT 4.1 翻译

样例

2
4
1 2 4 3
5
1 1 1 1 1
3
2 3 4 
5
1 2 3 4 5 

在线编程 IDE

建议全屏模式获得最佳体验