HELP
查看原帖
HELP
112270
卑微楼主2021/3/28 08:43

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)

2021/3/28 08:43
加载中...