严格按照模板来的只有十分
查看原帖
严格按照模板来的只有十分
1138102
chyh022楼主2023/11/28 21:03

求大佬看看是check函数错了还是哪里错了

#include<iostream>
#define N 100005
using namespace std;
bool check(int p[],int mid,int n,int k){
	int count=0,t=0;
	for(int i=1;i<n;i++){
		if(p[i]-t<=mid){
			t=p[i];
		}else{
			while(t+mid<p[i]){
				t=t+mid;
				count++;
			}
		}
	}
	if(count<=k) return 1;
	else return 0;
}
int main(){
	int len,n,k,max=0;
	cin>>len>>n>>k;
	int p[N];
	for(int i=0;i<n;i++){
		cin>>p[i];
		if(i>=1){
			if(p[i]-p[i-1]>max) max=p[i]-p[i-1];
		}
	}
	int l=1,r=len;
	while(l<r){
		int mid=(l+r)/2;
		if(check(p,mid,n,k)) r=mid;
		else l=mid+1;
	}
	cout<<l<<endl;
	return 0;
}
2023/11/28 21:03
加载中...