二分30分求助qwq
查看原帖
二分30分求助qwq
500803
zzxzzxCCC楼主2023/8/10 11:21
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<bits/stdc++.h>
using namespace std;
int L,N,M,D[50050];
bool check(int xx){
	int tot=0;
	int i=0;
	int now=0;
	while(i<N+1){
		i++;
	    if(D[i]-D[now]<xx)
		    tot++;
		else
		    now=i;
	} 
	if(tot>M) return false;
	return true;
}
int main(){
	scanf("%d%d%d",&L,&N,&M);
	for(int i=1;i<=N;i++)
		scanf("%d",&D[i]);
	int left=1,right=N+1;
	int mid,ans=0;
	while(left<=right){
		mid=left+(right-left)/2;
		if(check(mid)){
			ans=mid;
			left=mid+1;
		}             
		else right=mid-1;
	} 
	printf("%d",ans);
	return 0;
}

大佬们%%%%%%%

2023/8/10 11:21
加载中...