90分求助!wa点7!
查看原帖
90分求助!wa点7!
419502
xddno1楼主2021/11/18 00:27
#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
	int val;
	int maxright;
};
int n,k;
node arr[50005];
bool cmp(node x,node y)
{
	return x.val<y.val;
}
int main()
{
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)
		scanf("%d",&arr[i].val);
	sort(arr+1,arr+n+1,cmp);
	/*for(int i=1;i<=n;i++)
		printf("%d\n",arr[i].val);
	printf("\n\n");*/
	int rightindex=n;
	for(int i=n;i>=1;i--)
	{
		if(arr[rightindex].val-arr[i].val<=k)
		{
			arr[i].maxright = max(arr[i+1].maxright,rightindex - i+1);
			
		}
		else
		{
			rightindex--;
			i++;
			continue;
		}
	}
	int leftindex = 1;
	int maxnum = 0;
	for(int i=1;i<=n;i++)
	{
		
		if(arr[i].val - arr[leftindex].val<=k)
		{
			// printf("%d %d %d\n", i, leftindex, arr[i].maxright);
			maxnum = max(maxnum,i - leftindex + 1 + arr[i].maxright);
		}
		else
		{
			leftindex++;
			i--;
			continue;
		}
	}
	printf("%d",maxnum);
	return 0;
}



2021/11/18 00:27
加载中...