提交时间:2024-10-24 13:43:49
运行 ID: 33852
#include<bits/stdc++.h> using namespace std; #define int long long int n,k,a[100005],b[100005],cnt[100005]; void slv(){ cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i]; b[i]=a[i]; cnt[i]=0; } sort(b+1,b+1+n); int mn=unique(b+1,b+1+n)-b-1; for(int i=1;i<=n;i++){ a[i]=lower_bound(b+1,b+1+mn,a[i])-b; cnt[a[i]]++; } int l=1,r=1,sum=cnt[1],ans=cnt[1]; while(r<=mn){ r++; sum+=cnt[r]; if(b[r]-b[r-1]!=1)l=r,sum=cnt[r]; while(b[r]-b[l]>k)l++,sum-=cnt[l-1]; ans=max(ans,sum); } cout<<ans<<endl; } signed main(){ //freopen("clamprun.in","r",stdin); //freopen("clamprun.out","w",stdout); int T; cin>>T; while(T--) slv(); // cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"; return 0; }