二分精度被卡
查看原帖
二分精度被卡
647306
ColinKIA楼主2022/5/23 23:40

70分 2,4,7三个点过不了

#include <bits/stdc++.h>
using namespace std;
long long l,m,n,ans=0;
long long a[50005];
int check(int sb){
	int sum=0;
	long long b[50005];
	for(int i=1;i<=n;i++){
		b[i]=a[i];
	}
	for(int i=1;i<=n;i++){
		if(b[i+1]-b[i]<sb){
			b[i+1]=b[i];
			sum++;
		}
	}
	return sum;
}
int main(){
	scanf("%lld %lld %lld",&l,&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	long long l1=0,r=l;
	while(l1<=r){
		long long mid=(l1+r)/2;
		//printf("%lld\n",mid);
		if(check(mid)>m){
			r=mid-1;
		}else{
			//printf("%lld\n",mid);
			l1=mid+1;
			ans=mid;
		}
	}
	printf("%lld",ans);
}
2022/5/23 23:40
加载中...