题号:NC220736
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
czh有一个快乐集合S,集合中有n个非负数,而且这个集合还可以不断的加进非负数。
但是如果随意加的话这个集合就显得不那么快乐,于是czh就想到了一个操作:
将值为

的数加入快乐数组,其中 a 为 happy(S), b 为 max(S) ,如果在快乐数组中已经存在这个
值为
的数,那么这个数仍然会加入进快乐数组中。
下面对上述式子中的一些快乐的定义做出解释:
其中

表示对(a+b)/2的值向上取整,如(1+4)/2向上取整的结果为3
happy(S)表示快乐集合中最小的缺失数,如对于集合S[0,1,2,4,5] ,则happy(S) = 3
max(S)表示快乐集合中最大的数,如对于上述S,max(S) = 5
czh觉得这个集合太快乐了,于是叫来了fishfloss,想让fishfloss求一下在k次操作后,快乐集合S中不同元素的个数
fishfloss并不会,所以他很不快乐,你来帮帮他吧。
输入描述:
第一行为t (1 ≤ t ≤ 100) ,代表 t 组测试用例
每组测试用例的第一行包含两个数

,其中n为集合的大小,k为操作次数
每组测试用例的第二行包含n个不同的数

为快乐集合中的数
可以保证所有测试用例的n的和不超过105
输出描述:
对于每组测试用例,输出在k次操作后,快乐集合S中不同元素的个数
示例1
输入
复制
5
4 1
0 1 3 4
3 1
0 1 4
3 0
0 1 4
3 2
0 1 2
3 2
1 2 3
说明
对于第一组测试用例,可以求得happy(S) = 2,max(S) = 4,

= 3,3加入快乐集合后,集合变为[0,1,3,3,4],答案为4
对于第二组测试用例,可以求得happy(S) = 2,max(S) = 4,

= 3,3加入快乐集合后,集合变为[0,1,3,4],答案为4