首先用双指针,算法去做(无法用滑动区间,因为区间长度不固定),然后保留4位小数即可
using namespace std;
#define int long long
const int N=2e5+10;
int a[N];
vector<int>q;
signed main()
{
int n,k;
cin>>n>>k;
int ans=0;
for(int i=1;i<=n;i++)
{
int t;
cin>>t;
q.push_back(t);
}
sort(q.begin(),q.end());
int num=0;
for(int i=0,j=0;i<n;i++)
{
while(q[i]-q[j]>k)//这里注意判断条件,不用太死板j<i是必然的
{
j++;
}
num=max(num,i-j+1);
}
printf("%.4lf",(double)num/n);
return 0;
# }