L为N+2块石子中最右边石子位置,0最左,M为可移除块数,求移除后相邻石子可达到的最大距离。
#include#include #include #include #include using namespace std;typedef int LL;LL L,N,M;LL a[50005];bool ok(LL x){ int cnt=0; for(int i=0,j=1;j<=N;j++) //i:当前保留石块最靠右的一个 if(a[j]-a[i] 1) { LL mid=(l+r)/2; if(ok(mid)) l=mid; else r=mid; } return l;}int main(){ ios_base::sync_with_stdio(false); while(cin>>L>>N>>M) { a[0]=0; a[++N]=L; for(int i=1;i >a[i]; sort(a,a+N); LL Min=1e9+7; for(int i=1;i<=N;i++) Min=min(Min,a[i]-a[i-1]); cout< <