求助,30分,二分
查看原帖
求助,30分,二分
1059565
liuyinuo666楼主2024/8/12 17:56
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,a[50001],x[50001],y[50001];
int ef(int x,int n) // >=x的第一个位置 
{
	return lower_bound(a+1,a+1+n, x) - a;
}

int ef2(int x,int w)
{
	return upper_bound(a+1, a+1+n, x) - a - 1;
}
signed main()
{
	int mx=-114514;
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+1+n); 
	for(int i=1;i<=n;i++)
	{
		x[i]=ef(a[i]-k,i);
		y[i]=ef2(a[i]+k,i);
	}
	for(int i=1;i<=n;i++)
	{
		//x[i] ~ i
		//i+1~y[i+1]
		mx = max(mx, i - x[i] + 1 + y[i+1] - (i+1) +1);
	}
	cout<<mx;
}
2024/8/12 17:56
加载中...