我的代码(60分):
#include <iostream>
using namespace std;
int L, n, m, l, r, maxn, mid, ans;
int d[50002];
bool check(int x)
{
int cnt = 0, last = 0;
for (int i = 1; i <= n + 1; ++i)
{
if (d[i] - last < x)
{
cnt += 1;
}
else
{
last = d[i];
}
}
return cnt <= m;
}
int main()
{
cin >> L >> n >> m;
for (int i = 1; i < n; ++i)
{
cin >> d[i];
}
d[n + 1] = L;
l = 1;
r = L + 1;
while (l <= r)
{
mid = (l + r) / 2;
if (check(mid) == true)
{
l = mid + 1;
ans = mid;
}
else
{
r = mid - 1;
}
}
cout << ans;
return 0;
}