跳石头
#include<bits/stdc++.h> using namespace std; int main(){ int l,n,m; cin>>l>>n>>m; int a[n+5]; for(int i = 1;i<=n;i++){ cin>>a[i]; } long left = 1,right = l,mid,sum = 0,num; long now; while(left<=right){ mid = left+(right-left)/2; num = 0; now = 0; for(long i = 1;i<=n;i++){ if(a[i]-a[now]<mid){ num++; }else{ now = i; } } if(num<=m){ sum = mid; left = mid+1; }else{ right = mid-1; } } cout<<sum; return 0; }