#CF2185H. 战斗奶牛 2

    ID: 7017 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>二分暴力数据结构动态规划贪心CodeforcesCodeforces Round 1074(Div4)Div4HCF2185H2500

战斗奶牛 2

题目描述

Farmer John 想举办另一场有 nn 头奶牛的锦标赛,第 ii 头奶牛的技能值为 aia_i。重复以下过程,直到队列中只剩一头奶牛:

  • 队首第一头奶牛与第二头奶牛战斗,技能值更高者获胜;若平局,第一头奶牛获胜。
  • 获胜奶牛的技能值变为 x+yx+y,其中 xx 是获胜者原技能值,yy 是失败者原技能值。
  • 失败奶牛离开队列。

不过,为了贴近真实的 USACOW 比赛,一头奶牛最多可以作弊 kk 次。也就是说,即使它输掉一场战斗,Farmer John 也会把它当作获胜方处理:失败方技能值变为 x+yx+y,获胜方离开队列。

对于奶牛 ii,如果把它从原位置移除,并在不改变其它奶牛相对顺序的前提下插入到位置 xx,且在没有其它奶牛作弊的情况下,它能成为锦标赛结束后唯一剩下的奶牛,则称位置 xx 对奶牛 ii 是好的。

请对队列中的每头奶牛,计算它的好位置数量。

输入格式

第一行一个整数 tt,表示测试组数。

每组测试数据第一行包含两个整数 n,kn,k,分别表示奶牛数量和一头奶牛最多可以作弊的次数。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n

保证所有测试数据的 nn 之和不超过 21052\cdot 10^5

输出格式

对于每组测试数据,输出 nn 个整数,第 ii 个整数表示第 ii 头奶牛的好位置数量。

样例

7
2 0
2 1
2 0
1 1
3 1
1 1 3
3 0
2 1 1
3 1
1 3 1
4 1
1 2 1 3
7 2
1 3 3 17 39 3 12
2 0
1 1
2 2 3
2 0 0
3 3 2
4 4 4 4
4 6 6 7 7 5 7

样例说明

第一组测试数据中,技能值为 22 的奶牛无论放在哪都能获胜,另一头奶牛无论放在哪都会失败。

第二组测试数据中,两头奶牛都能在位置 11 获胜,但不能在位置 22 获胜,因此答案均为 11

第三组测试数据中,以奶牛 11 为例:若放在位置 11,它第一场获胜,技能值变为 22,之后可以作弊一次赢下第二场;若放在位置 22,它第一场需要作弊,但之后仍会输掉;若放在位置 33,它第一场需要作弊,随后没有更多比赛。

数据范围

  • 1t1041 \le t \le 10^4
  • 2n21052 \le n \le 2\cdot 10^5
  • 0k<n0 \le k < n
  • 1ai1091 \le a_i \le 10^9
  • 所有测试数据的 nn 之和不超过 21052\cdot 10^5

来源

Codeforces Round 1074 (Div. 4), Problem H - BattleCows 2