cpp
#include <iostream>
using namespace std;
//找到最小的空旷距离 再小一点就路灯就不够用了
const int N = 1e7 + 10;
int flag[N];
int main()
{
int length, pre, goal;
cin >> length >> pre >> goal;
int p = 0,mx = 0;
for (int i = 0; i < pre; i++)
{
int temp;
cin >> temp;
flag[i] = temp - p;
mx = max(mx, flag[i]);
p = temp;
}
flag[pre] = length - p; //最后那个
mx = max(mx, flag[pre]);
//现在 flag0-pre 中存放的是各个路标之间的差值
int l = 0, r = mx;
while (l < r)
{
int mid = l + r >> 1, sum = 0;
if (mid == 1)
{
l = 1; break;
}
for (int i = 0; i <= pre; i++)
{
sum += flag[i] / mid;
}
if (sum > goal)
l = mid + 1;
else
r = mid;
}
cout << l << endl;
return 0;
}
//因为l左边的都是不满足条件的,输出l感觉不应该会出现多1的情况,
测评结果是(https://www.luogu.com.cn/record/164179576)```