1wa
查看原帖
1wa
546830
XSean楼主2022/10/4 21:46

为什么错了,应怎么改,为什么n不能改为n+1

#include<bits/stdc++.h>
using namespace std;
int read(){
	char c=getchar();
	int f=1,x=0;
	while(c<'0'||c>'9'){
	    if(c=='-'){
			f=-1;
		}
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=(x<<3)+(x<<1)+(c^'0');
		c=getchar();
	}
	return f*x;
}
//二分答案
const int N = 5e4+10;
int arr[N];
int L,n,m;
bool check(int x){
	int now=0,cnt=0;
	for(int i=1;i<=n;i++){//n->n+1?
		if((arr[i]-now)>=x){
			now=arr[i];
		}else{
			cnt++;
		}
	}
	return cnt<=m;
}
int bsearch(int l,int r){
	while(l<r){
		int mid=(l+r+1)>>1;
		if(check(mid)){
			l=mid;
		}else{
			r=mid-1;
		}
	}
	return l;
}
int main(){
	cin>>L>>n>>m;
	for(int i=1;i<=n;i++) cin>>arr[i];
	cout<<bsearch(1,L);



	return 0;
}

2022/10/4 21:46
加载中...