100分,但是在Subtask #1上WA了,求助
查看原帖
100分,但是在Subtask #1上WA了,求助
741052
CSFei楼主2023/10/10 13:29
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <cstring>
int L,N,M;
int Di[50005];

int work(int left,int right){
	if(right - left <= 1) return left;
	int mid = left+(right-left)/2;
	int last=0;
	int remove=0;
	bool flag=false;
	for(int i=1;i<=N;i++){
		if(Di[i]-last<mid){
			remove++;
			if(remove>M){
			flag=true;
			break;
			}
		}
		else{
			last=Di[i];
		}
		
	}
	
	if(flag){
		return work(left,mid);
	}
	else{
		return work(mid,right);
	}
}

int main(){
	scanf("%d %d %d",&L,&N,&M);
	for(int i = 1;i <= N;i++) scanf("%d",&Di[i]);
	Di[N+1] = L;
	printf("%d",work(1,L+1));
	return 0;
}
2023/10/10 13:29
加载中...