题目描述
给定一个整数序列 A=(A1, A2, …, AN+K−1)(1≤Ai≤N+K−1),对于每个 i,定义 Bi 为 Ai,Ai+1,…,Ai+K−1 这 K 个数中不同元素的个数,得到序列 B=(B1, B2, …, BN)。
给定 B1,B2,…,BN,判断是否存在一个序列 A 能够生成该序列 B,如果存在,请构造出任意一个满足条件的 A。
对于每个输入文件,需要解答 T 个测试用例。
输入格式
输入从标准输入读入,格式如下:
T
case1
case2
⋮
caseT
每个测试用例如下格式:
N K
B1 B2 … BN
输出格式
对于每个测试用例,如果不存在满足条件的序列 A,输出 NO。
否则,输出如下格式:
YES
A1 A2 … AN+K−1
其中 1≤Ai≤N+K−1,且 A 必须能够生成给定的 B。如果有多组解,输出任意一组均可。
YES 或 NO 的输出中字母大小写均可。
样例 1
输入
3
3 3
1 2 1
4 3
1 2 2 1
6 4
3 3 3 3 3 3
输出
NO
YES
1 1 1 2 2 2
YES
1 2 3 1 2 3 1 2 3
说明/提示
限制条件
- 1≤T≤5⋅104
- 2≤N≤2⋅105
- 2≤K≤2⋅105
- 1≤Bi≤K
- 每个输入文件中所有 N 的总和不超过 2⋅105。
- 每个输入文件中所有 K 的总和不超过 2⋅105。
- 输入中的所有值均为整数。
由 ChatGPT 4.1 翻译