代码求调QAQ
查看原帖
代码求调QAQ
739817
xdnjf楼主2023/5/24 18:11
#include<bits/stdc++.h>
using namespace std;
long long x;
long long read(){
	long long x=0,y=1;
	char ch;
	ch=getchar();
	while(ch<'0'||ch>'9'&&ch!=EOF){
		if(ch=='-'){
			y=-1;
		}
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+(ch-'0');
		ch=getchar();
	}
	return x*y;
}
void write(long long x){
    if(x<0)
        putchar('-'),x=-x;
    if(x>9)
        write(x/10);
    putchar(x%10+'0');
    return;
}
long long n;
long long m;
long long L;
long long a[1100000]; 
bool check(long long mid){
	long long now=1,x=0;
	for(int i=2;i<=n+1&&now<=n;i++){
		if(a[i]-a[now]<mid){
			x++;
		}else{
		    now=i;
		}
		if(x>m){
			return false;
		}
	}
	return true;
}
signed main(){
	L=read(),n=read(),m=read();
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	a[n+1]=L;
	long long l=1;
	long long r=L;
	long long ans=0x3f3f3f3f3f3f3f;
	while(l<=r){
		long long mid=l+(r-l)/2;
		if(check(mid)){
			ans=mid;
			l=mid+1;
		}else{
			r=mid-1;
		}
	}
	cout<<ans;
	return 0;
}
2023/5/24 18:11
加载中...