#include <iostream>
using namespace std;
const long long MAXN = 1e8 + 50;
long long l, n, m, a[MAXN];
bool op(long long x)
{
int t = 0;
int i = 0;
int now = 0;
for (int i = 0; i < n + 1; i++)
{
if (a[i] - a[now] < x)
t++;
else
now = i;
}
if (t > m)
return false;
else
return true;
}
int main()
{
cin >> l >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
a[n + 1] = 1;
long long ll = 1, rr = l;
while (ll < rr)
{
long long mid=(ll+rr)>>1;
for (int i = 1; i <= n; i++)
{
if (op(mid))
{
ll = mid+1;
}
else
{
rr = mid - 1;
}
}
}
if (!op(l))
{
l--;
}
cout << ll << endl;
}
测试点