Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33855 | A21μΘ_wjy | 【S】T1 | C++ | 解答错误 | 10 | 170 MS | 4168 KB | 961 | 2024-10-24 14:00:21 |
#include<bits/stdc++.h> #define int long long using namespace std; const int maxn=2e5+7; bool ST; int n,k; int a[maxn]; struct Node{ int val,cnt; Node(int v=0,int c=0){val=v,cnt=c;} }; Node t[maxn]; int c=0; inline void slv(){ c=0; cin>>n>>k; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1); int lst=1; a[n+1]=0; for(int i=2;i<=n+1;i++)if(a[i]!=a[lst])t[++c]=Node(a[lst],i-lst),lst=i; int L=1,R=1; int ans=0; int cur=t[L].cnt; while(L<=c){ bool tg=R<L; if(tg)while(R<L){R++;} if(tg)cur=t[L].cnt; while(t[R+1].val-t[L].val<=k-1&&abs(t[R+1].val-t[R].val)<=1&&R<c){ R++; cur+=t[R].cnt; } ans=max(ans,cur); cur-=t[L].cnt; L++; } cout<<ans<<endl; return; } bool ED; signed main(){ int t; cin>>t; while(t--)slv(); // cerr<<abs(&ED-&ST)/1048576.0<<endl; }