#NK202509L. 乒乓
乒乓
题目描述
有 个同学轮流在一张桌子上打乒乓球。第 个同学的能力值为 ,能力值两两不同。以下是他们打乒乓球的规则:
- 一开始,场上只有一个人,编号 。队列 里从前到后表示当前排队的人。
- 接下来每一轮,处在队首的选手会弹出队列,与和场上的人进行乒乓球比赛。进行比赛的时候,能力值高的人会赢。比赛的败者加入队尾,而胜者留在场上。
但是,为了避免强者一直霸场,他们额外制定了反差断规则:如果一个人已经连续参加了 场比赛,则无论他是否攻守都会视作他输了本轮,他会加入队尾,而对手会留在场上。
他们一直进行下去,直到进行了 轮比赛,你可以算出每个人参加了多少次比赛吗?
输入格式
输入包含多组数据。第一行一个正整数 表示数据组数。每个数据的描述如下:
- 第一行包含两个整数 $n, k \ (3 \le n \le 2 \times 10^5, 1 \le k \le 10^9)$。
- 第二行包含 个整数 。
保证所有 都是不同的,并且 组数据中 的总和不会超过 。
输出格式
对于每组数据,输出一行 个整数,第 个整数表示输入中的第 个同学一共参加了多少场比赛。
输入输出样例 #1
输入 #1
2
3 3
100 50 20
3 5
2 3 1
输出 #1
3 2 1
4 4 2
说明/提示
对于样例,发生了以下情况:
- 场上 1,[队列 2, 3]:1 vs 2:1 获胜,[队列变为 3, 2]
- 场上 1,[队列 3, 2]:1 vs 3:1 获胜,[队列变为 2, 3]
- 场上 1,[队列 2, 3]:1 vs 2:2 获胜(触发反差断规则),[队列变为 3, 1]