#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1e6 + 5;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n,p;
cin>>n>>p;
vector<int> a(n);
vector<int> b;
int len;
int max=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int j=0;
sort(a.begin(),a.end());
for(int i=0;i<n;i++)
{
while(j<n&&a[j]-a[i]<=2*p)
{
j++;
len=j-i;
if(len>max)
max=len;
}
}
cout<<max;
return 0;
}
蒟蒻题解QAQ:
本题明显的考察的是滑动窗口,我们看到题目自然想到要排序a数组并找到最大的满足差值小于等于2p的区间。既然是查找元素差值≤定值这一类的问题自然想到滑动窗口。所以进行区间查找,由于只需寻找最大值,故每次优化即可。注意不要暴力两个for循环,会超时,只需在原先基础上优化即能查找最佳区间。
欢迎大家关注本蒟蒻QAQ,蟹蟹!

京公网安备 11010502036488号