传输
  • 板块灌水区
  • 楼主Yuyaoshuo0211
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/7/28 11:58
  • 上次更新2024/7/28 14:07:08
查看原帖
传输
1139331
Yuyaoshuo0211楼主2024/7/28 11:58
#include<bits/stdc++.h>
using namespace std;
const int Maxx=1e5+5;
int a[Maxx];
int n,m;
bool check(int mid){
	int con=1;
	int last=mid;
	for(int i=0;i<n;i++){
		if(last-a[i]>=0){
			last=last-a[i];
		}else{
			con++;
			last=mid-a[i];
		}
	}
	return (con<=m);
}
int main(){
	int left=-1,right=0;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>a[i];
		left=max(left,a[i]);
		right+=a[i];
	}
	right++;
	int res=-1;
	while(left<right){
		int mid=(left+right)/2;
		if(check(mid)==true){
			res=mid;
			right=mid;
		}else{
			left=mid+1;
		}
	}
	cout<<res;
	return 0;
}
2024/7/28 11:58
加载中...