#include <bits/stdc++.h>
using namespace std;
using ll=long long;
#define endl '\n'
void solve()
{
int n,m;
cin>>n>>m;
if(m>n+1)
{
cout<<"NO"<<endl;
return;
}
int a[n+1];
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
int l=1,r=1;
int ans=1;
int cnt=0;
for(r=2;r<=n;r++)
{
if(a[r]-a[r-1]>2)
{
cnt=0;
l=r;
}
else
{
if(a[r]-a[r-1]==2)
cnt++;
while(cnt>1)
{
if(a[l+1]-a[l]>1)
cnt--;
l++;
}
ans=max(ans,r-l+1);
}
}
if(ans>=m-1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--)
solve();
return 0;
}
双指针,需要注意的是当有两个差大于1时,两个填充都要考虑

京公网安备 11010502036488号