#include #include using namespace std; #define maxn 50050 int L,n,m; int dis[maxn]; bool judge(int x) { int num=n-m;//减掉m个石头 int last=0;//放置num个石头,循环num次 for(int i=0;i=x才能放,把石头放在第1个不满足条件的位置 cur++;//由cur累计位置 if(cur>n) return 0;//如果在这个过程中大于n了,说明放不开 last=cur;//更新last位置 } return 1; } int main() { cin>>L>>n>>m; if(n==m) { cout<>dis[i]; dis[0]=0;//增加开始点 dis[n+1]=L;//增加结束点 sort(dis,dis+n+2); int left=0,right=L; while(right-left>1) { int mid=(right+left)/2; if(judge(mid)) left=mid;//如果放得开,说明x还可以更大 else right=mid; } cout<