#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,求教两份代码的区别,十分感谢。