暴躁的程序员
暴躁的程序员
某公司的程序猿每天都很暴躁,因为他们每个人都认为其他程序猿和自己风格不同,无法一同工作。
当他们的工位的编号距离太近时,他们可能会发生语言甚至肢体冲突,为了尽量避免这种情况发生。现在公司打算重新安排工位,因为有些关系户的工位是固定的,现在只有一部分工位空了出来:
现在有 N
个程序猿需要分配在 M
个工位中,第 i
个工位的编号为 Xi,工位编号各不相同,现在要求距离最近的两个程序猿之间的距离最大,求这个最大距离是多少? Xi 和 Xj 工位之间距离为|Xi −Xj|。
输入:
输入共 M+1
行,第一行两个整数 M
, N
(2 ≤ N ≤ M ≤ 100,000)
接下来 M
行,每行一个数表示剩余的工位的编号。
输出:
输出距离最近的两个程序猿之间的最大距离。
样例:
1 | 5 3 |
1 | 3 |
1.解题思路
- 根据每一个二分答案长度
num[i]
,利用fun()
函数进行计算,求出其对应的能够安排的程序员人数 - 根据当前能够分的人数
s
与题目给定需要分配的人数m
进行比较,从而调整左右指针 - 当左右指针逼近到一定范围时,表示最佳答案已经找到
2.代码实现
1 |
|
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.