题目可以转化成找出能圈最多鸡窝的栅栏喵~排序双指针就可以了喵~
#include <algorithm>
#include <cfloat>
#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;
int n;
int k;
vector<int> x;
void Solve() {
cin >> n >> k;
x.resize(n);
for (auto& v : x) {
cin >> v;
}
sort(x.begin(), x.end());
int maxi = 0;
for (int l = 0, r = 0; r < n; r++) {
while (x[r] - x[l] > k) {
l++;
}
maxi = max(maxi, r - l);
}
cout << setprecision(DBL_MANT_DIG) << (double)(maxi + 1) / n;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
Solve();
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号