是因为这题的特殊属性导致必须用二分的另一个模板么?(大于等于那边的判定要改成小于等于的判定)
#include<stdio.h>
#pragma warning(disable:4996)
const int Q = 1e+6;
int a[Q];
int check(int x,int M);
int main(void)
{
int L, M, N,i;
scanf("%d %d %d", &L, &M, &N);
for ( i = 1; i <=M; i++)
{
scanf("%d", &a[i]);
}
int l = 0, r = a[--i];
while (r>l)
{
int mid = (l + r) / 2;
if (check(mid,M) >= N)r = mid;
else l = mid + 1;
}
printf("%d", l);
return 0;
}
int check(int x,int M)
{
int k = 0;
int new1=0;
for (int i = 1; i <= M; i++)
{
if (a[i]-a[new1]<x)
{
k++;
}
else
{
new1 = i;
}
}
return k;
}