教室里面原来有 n张桌子,而参加考试的同学只有 m 个,所以肖恩可以去掉 n−m 张桌子。为了最大可能的防止同学们作弊,肖恩想去掉一些桌子后剩下的相邻桌子之间的最小距离最大。现在肖恩把这个问题交给你,请你求出这个可能的最大的最小距离是多少(注意第一张桌子和最后一张桌子与墙的距离也算作一个距离,墙位于教室的两侧,下标分别为 0和教室的大小k),输出一个数字表示可能的最大的最小距离。
第一行输入三个数字k,n和m ,分别表示教室的长度,桌子的数量和参加考试的同学的数量
第二行包括n个整数,第i个数字ai表示第i张桌子的位置。其中保证所有桌子的位置坐标一定都是按从小到大的顺序给出的。
k,n,m=map(int,input().split())
a=list(map(int,input().split()))
def check(x):
last_place,tot = 0,0
for i in range(n):
if a[i] - last_place >= x:
last_place = a[i]
else:
tot += 1
if k - last_place < x:
tot += 1
if tot <= n - m:
return True
left,right =1,k
ans = 1
while left <= right:
mid = (left + right) // 2
if check(mid):
ans = mid
left = mid + 1
else:
right = mid - 1
print(ans)