Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
39785 stevenyu 【S】T1 C++ 通过 100 178 MS 2664 KB 1281 2026-02-02 14:04:39

Tests(10/10):


#include<bits/stdc++.h> using namespace std; #define int long long int t,a[100005]; struct node{ int nm=0,cnt=0; }; int pos[100005]; int pre_sum[100005]; signed main(){ cin>>t; while(t--){ node p[100005]; int sz=1; int sz2=0; int n,k; cin>>n>>k; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1); p[1].nm=a[1]; p[1].cnt++; for(int i=2;i<=n;i++){ if(a[i]==a[i-1]){p[sz].cnt++;} else {p[++sz].nm=a[i],p[sz].cnt++;} } for(int i=2;i<=sz;i++){ if(p[i].nm>p[i-1].nm+1){ pos[++sz2]=i; } } int ans=0; for(int i=1;i<=sz;i++){ pre_sum[i]=pre_sum[i-1]+p[i].cnt; ans=max(ans,p[i].cnt); } pos[0]=1,pos[sz2+1]=sz+1; for(int i=0;i<=sz2;i++){ if(p[pos[i+1]-1].nm-p[pos[i]].nm<=k)ans=max(ans,pre_sum[pos[i+1]-1]-pre_sum[pos[i]-1]); else{ for(int j=pos[i];j<=pos[i+1]-1;j++){ if(j+k<=pos[i+1]-1)ans=max(ans,pre_sum[j+k]-pre_sum[j-1]); } } } cout<<ans<<endl; } return 0; } /* 2 3 4 5 */


测评信息: