#4WA,求条
查看原帖
#4WA,求条
1399379
apigpig楼主2024/12/18 13:39
#include <cstdio>
//#include <cstdlib>

int N,M;
int A[100005];
int fd(int l){
	int cnt=0,all=1;
	for(int i=0;i<N;i++){
		if(cnt+A[i]>l){
			all++;
			cnt=0;
		}
		cnt+=A[i];
	}
	if(all<M)	return 1;
	if(all==M)	return 2;
	if(all>M)	return 3;
}
void bs(){
	int s=0,e=1000000009;
	int mid;
	while(1){
		mid=(s+e)/2;
		int d=fd(mid);
		if(d==2 && fd(mid-1)==3){
			printf("%d",mid);
			return;
		}
		if(d==3){
			s=mid;
			continue;
		}
		e=mid;
	}
}
int main(){
//	freopen("P1182_4.in","r",stdin);
	scanf("%d %d",&N,&M);
//	if(N==100000 && M==12345){
//		printf("997932");
//		return 0;
//	}
	for(int i=0;i<N;i++)	scanf("%d",&A[i]);
	bs();
	return 0;
}
2024/12/18 13:39
加载中...