| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 39796 | 黄子睿 | 【S】T1 | C++ | 运行超时 | 80 | 1000 MS | 716 KB | 1133 | 2026-02-02 14:34:32 |
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N]; int dis[N]; int vis[N]; int sum[N]; int t,n,k; int main(){ scanf("%d",&t); while(t--){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); dis[1]=a[1]; int f=2; int ji=1; for(int i=2;i<=n;i++){ if(a[i]!=a[i-1]){ vis[f-1]=ji; dis[f]=a[i]; f++; ji=0; } ji++; } vis[f-1]=ji; int ans=vis[1]; int w=vis[1]; int l=1,r=1; while(r!=f-1){ if(r-l<k&&dis[r+1]==dis[r]+1){ r++; w+=vis[r]; ans=max(ans,w); } if(r-l==k&&dis[r+1]==dis[r]+1){ l++; w-=vis[l-1]; } if(dis[r+1]>dis[r]+1){ l=r+1,r=r+1; w=vis[r]; ans=max(ans,w); } } printf("%d\n",ans); } return 0; }