【题目分析】
有趣
【代码】
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[50001],n,k,ans=0;
int l[50001],r[50001];
int main()
{
scanf("%d%d",&n,&k);
for (int i=1;i<=n;++i) scanf("%d",&a[i]);
sort(a+1,a+n+1);
int h=1; l[1]=1;
for (int i=2;i<=n;++i)
{
while (a[i]-a[h]>k) h++;
l[i]=max(l[i-1],i-h+1);
}
r[n]=1;
h=n;
for (int i=n-1;i>=1;--i)
{
while (a[h]-a[i]>k) h--;
r[i]=max(r[i+1],h-i+1);
}
for (int i=1;i<n;++i)
ans=max(ans,l[i]+r[i+1]);
printf("%d\n",ans);
}