HELP!!
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+5;
int n,k,a[N],m,ans;
int z()
{
int l,r=1,da=0;
for (l=1;l<=m;++l)
{
while(r<m && a[r+1]-a[l]<=k)
r++;
da=max(da,r-l+1);
}
return da;
}
int y()
{
int l,r=m+1,s=1,da=0;
for (l=m+1;l<=n;++l)
{
while(r<n && a[r+1]-a[l]<=k)
r++;
da=max(da,r-l+1);
}
return da;
}
int main()
{
scanf("%d%d",&n,&k);
for (int i=1;i<=n;++i)
scanf("%d",a+i);
sort(a+1,a+n+1);
for (m=1;m<n;++m)
ans=max(ans,z()+y());
printf("%d \n",ans);
return 0;
}
只会N^2算法,不知如何优化,求大佬帮助
(60points)