解题思路:
呃,这道题,暴力就行,代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
int n,k;
for(int i=0;i<t;i++){
cin>>n>>k;
int a[n];
for(int j=0;j<n;j++){
cin>>a[j];
}
sort(a,a+n);
int ans=0,tmans=0;
for(int j=0;j<n;j++){
/*暴力枚举,tmans不用回到j+1,以为j到前一个tmans值永远是小于k的,这也是妙处*/
while(tmans<n&&a[tmans]-a[j]<=k){
/*tmans是记录可行个数的,也是最后一个的下标,不可以清0*/
tmans++;
}
ans=max(ans,tmans-j);//必须减j,tmans上面没有清0
}
cout<<ans<<endl;
}
return 0;
}