奇怪的布局
#include<bits/stdc++.h>
using namespace std;
long long s=1,n,m,a[10000010],z,x,y;
bool ok(long long h)
{
long long ans=a[1];
for(int i=1;i<m;i++)
{
ans+=h;
for(int j=s+1;j<=n;j++)
{
if(a[j]>=ans){
ans=a[j];
s=j;
break;
}
}
if(ans>a[z])return false;
}
return true;
}
int findans(long long l,long long r){
long long mid;
while(l+1<r)
{
mid=(l+r)/2;
if(ok(mid))l=mid;
else r=mid;
}
return l;
}
int main(){
cin>>m>>n;
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&x,&y);
for(int j=x;j<=y;j++)
{
a[++z]=j;
}
}
sort(a+1,a+n+1);
cout<<findans(0,a[z]);
return 0;
}
还请巨佬帮忙查查错!