70分二分求助 wa456
查看原帖
70分二分求助 wa456
867346
Fugeg楼主2023/3/15 23:46

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
const int maxn=1e6+1;
ll n,m,l,ans,a[maxn];
inline int read(){//快速读入
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')	f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=(x<<1)+(x<<3)+(c^48);
		c=getchar();
	}
	return x*f;
}
bool pan(int x){
	ll sum=0,now=0,shi=0;
	while(shi<n+1){
		shi++;
		if(a[shi]-a[now]<x)	sum++;
		else	now=shi;
	}
	return sum<=m;
}
int main(){
	l=read();n=read();m=read();
	if(n==0){
		cout<<l;
		return 0;
	}
	for(register ll i=1;i<=n;i++)	a[i]=read();
	a[n+1]=l;
	ll la=1,lb=n;
	while(la<=lb){
		ll mid=la+(lb-la>>1);
		if(pan(mid)){
			la=mid+1;
			ans=mid;
		}
		else	lb=mid-1;
	}
	cout<<ans<<endl;
	return 0;
}

输入4的输入数据,直接就输出的是100(错误),没按回车,为什么呢

2023/3/15 23:46
加载中...