90pts WA求助
查看原帖
90pts WA求助
781131
suxiaozhou楼主2023/12/16 12:18
#include <bits/stdc++.h>
using namespace std;
int l,n,m,d[50010],ans=-1;
bool is_r(int a){
	int cnt=0,pos=0,front=0;//front (上一个没被拿走的石头)
	while (pos<n+1){
		pos++;
		if (d[pos]-d[front]<a){//小于最小距离
			cnt++;//又多了一个斩立决
		}
		else{
			front=pos;
		} 
	}
	if (cnt>m){//斩不过来了
		return 0; 
	}
	return 1;
}
int main(){
	cin>>l>>n>>m;
	/*
	if (n==0){
		cout<<l<<endl;
		return 0;
	}
	*/
	for (int i=1;i<=n;i++){
		cin>>d[i];
	}
	d[n+1]=l;
	int cl=1,cr=l+1;
	while (cl<cr){
		//cout<<cl<<" "<<cr<<endl;
		int cm=(cl+cr)/2;
		if (is_r(cm)){
			ans=cm;
			cl=cm+1;
		}
		else{
			cr=cm-1;
		}
	}
	cout<<ans<<endl;
	return 0;
}

Subtask #0 第五个点WA了,求大佬能帮忙看看吗?谢谢!!

2023/12/16 12:18
加载中...