求助
查看原帖
求助
764344
zenght楼主2024/3/2 10:34
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;

const int NR = 5e4 + 10;
int a[NR], pre[NR], mx, ans;

int main()
{
	int n, k;
	scanf("%d%d", &n, &k);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
	sort(a + 1, a + n + 1);
	a[n + 1] = 2e9;
	for (int i = 1, r = 1; i <= n; i++)
	{
		mx = max(mx, pre[i]);
		while (a[r] <= a[i] + k) r++;
		pre[r] = max(pre[r], r - i);
		ans = max(ans, mx + r - i);
	}
	printf("%d\n", ans);
	return 0;
}
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;

const int NR = 5e4 + 10;
int a[NR], pre[NR], mx, ans;

int main()
{
	int n, k;
	scanf("%d%d", &n, &k);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
	sort(a + 1, a + n + 1);
	for (int i = 1, r = 1; i <= n; i++)
	{
		mx = max(mx, pre[i]);
		while (r < n && a[r] <= a[i] + k) r++;
		pre[r] = max(pre[r], r - i);
		ans = max(ans, mx + r - i);
	}
	printf("%d\n", ans);
	return 0;
}

第一份代码 ac 100,第二份代码 wa 80,求教两份代码的区别,十分感谢。

2024/3/2 10:34
加载中...