#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
long long L, M, N, k;
long long s[50001];
bool check(long long x)
{
int now = 0, count = 0;
for (int i = 1; i <= N+1; i++)
{
if (s[i] - s[now] < x)
{
count++;
}
else now = i;
}
return count <= M;
}
long long find()
{
int l = 0, r = L, mi;
while (l <= r)
{
mi = l + (r - l) / 2;
if (check(mi))
{
l = mi + 1;
k = mi;
}
else r = mi - 1;
}
return k;
}
int main()
{
cin >> L >> N >> M;
s[0] = 0;
s[N + 1] = L;
for (int i = 1; i <= N; i++)
{
cin >> s[i];
}
find();
printf("%ld", k);
return 0;
}
为什么check函数中循环i<N时Subtask #1过不去,改成i<=N后Subtask #1能过但是Subtask #0,#11过不去了