tj
2024-07-29 15:22:55
发布于:浙江
16阅读
0回复
0点赞
二分
#include<bits/stdc++.h>
#define N (50000+10)
using namespace std;
int a[N];
int d,n,m,ans;
bool ck(int x){
int tot=0,i=0,now=0;
while (i<n+1){
i++;
if (a[i]-a[now]<x){
tot++;
}
else{
now=i;
}
}
if (tot>m) return false;
else return true;
}
int main(){
scanf("%d%d%d",&d,&n,&m);
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
a[n+1]=d;
int l=1,r=d,mid;
while (l<=r){
mid=(l+r)/2;
if (ck(mid)){
ans=mid;
l=mid+1;
}
else r=mid-1;
}
printf("%d",ans);
}
这里空空如也
有帮助,赞一个