#NC2509L. 乒乓

乒乓

题目描述

n n 个同学轮流在一张桌子上打乒乓球。第 i i 个同学的能力值为 ai a_i ,能力值两两不同。以下是他们打乒乓球的规则:

  • 一开始,场上只有一个人,编号是 11。队列 Q={2,3,,n} Q = \{2, 3, \ldots, n\} 里从前到后表示当前排队的人。
  • 接下来每一轮,处在队首的选手会弹出队列,并且和场上的人进行乒乓球比赛。进行比赛的时候,能力值高的人会赢。比赛的败者加入队尾,而胜者留在场上。

但是,为了避免强手一直霸场,他们额外制定了反垄断规则:如果一个人已经连续参加了 n1 n - 1 局比赛,那么接下来的这场比赛会无论如何视作这个人输。他会加入队尾,而胜者会留在场上。

他们一共进行了 k k 轮比赛,你可以算出每个人参加了多少次比赛吗?

输入格式

输入包含多组数据。第一行一个正整数 T T (1T10000 1 \leq T \leq 10000 ) 表示数据组数。每个数据的描述如下:

  • 第一行包含两个整数 n,k n, k (3n2×105,1k109 3 \leq n \leq 2 \times 10^5, 1 \leq k \leq 10^9 )。
  • 第二行包含 n n 个整数 a1,a2,,an a_1, a_2, \ldots, a_n (1ai109 1 \leq a_i \leq 10^9 )。

保证所有 ai a_i 都是不同的,并且 T T 组数据中 n n 的总和不会超过 2×105 2 \times 10^5

输出格式

对于每组数据,输出一行 n n 个整数,第 i i 个整数表示输入中的第 i i 个同学一共参加了多少场比赛。

2
3 3
100 50 20
3 5
2 3 1
3 2 1
4 4 2

解释 #1

对于第一个样例,发生了以下情况:

  1. 场上 1,队列 [2,3][2, 3]。1 vs. 2: 1 获胜,队列变为 [3,2][3, 2]
  2. 场上 1,队列 [3,2][3, 2]。1 vs. 3: 1 获胜,队列变为 [2,3][2, 3]
  3. 场上 1,队列 [2,3][2, 3]。1 vs. 2: 2 获胜(触发反垄断规则),队列变为 [3,1][3, 1]