问题 1415 --Problem E.BestCoder小团体

1415: Problem E.BestCoder小团体

时间限制: 1 Sec  内存限制: 32 MB
提交: 21  解决: 18
[提交][状态][讨论版][命题人:]

题目描述

BestCoder群里原来有n个ACMer,这些ACMer里,有的人喜欢聊天灌水,有的则习惯保持沉默,这样子每个ACMer都有各自的活跃度.假设一个人的活跃度为x,他如果发现另外一个人的活跃度是x-1或x+1,他就会与另外那个人组成一个萌萌哒的小团体.
而如果A与B在一个小团体里,且A与C在一个小团体里,那么显然有B与C也自然在一个小团体中啦.
然而BestCoder群的成员有人数上限限制,所以群主Boss.Liu不得不忍痛把活跃度<=某个值K的所有人踢出群.
于是Boss.Liu想知道,对于q个询问(询问相互独立,每个询问给定一个K),踢完人后还剩下多少个小团体呢?
(注意,每次踢完人之后,所有的小团伙要重新开始组建、确立.)

输入

输入包含多组数据. 第一行一个正整数T(T<=200),表示数据组数. 对于之后的每组数据,第一行包含两个整数n,q,第二行包含n个整数,代表这n个人的活跃度,数值从0到 ,第三行包含q个整数,代表q次询问的值 ,数组从0到 . 数据保证—— 50%的数据1<=n,q<=10; 90%的数据1<=n,q<=1000; 95%的数据1<=n,q<=10000; 100%的数据1<=n,q<=100000.

输出

对于每组数据,输出一行. 每行有q个整数,每个数后面有一个空格,表示对于q次询问的回答

样例输入

2
4 6
1 2 3 4
0 1 2 3 4 5
4 8
3 4 1 6
0 1 2 3 4 5 6 7

样例输出

1 1 1 1 0 0 
3 2 2 2 1 1 0 0

提示

来源

 

[提交][状态]