先将坐标排序,然后用双指针找到长度不超过k的区间中包含最多鸡窝的数量,最后用该最大数除以n得到概率。
import sys
data=sys.stdin.read().split()
it=iter(data)
MOD=1e9+7
MOD2=998244353
def solve():
n,k=int(next(it)),int(next(it))
a=[int(next(it)) for i in range(n)]
a.sort()
ans=0
j=0
for i in range(n):
while j<n and a[j]-a[i]<=k:
j+=1
if j-i>ans:
ans=j-i
print(ans/n)
if __name__=="__main__":
_=1
#_=int(next(it))
for __ in range(_):
solve()

京公网安备 11010502036488号