题目重了
2024-03-14 20:37:38
发布于:浙江
10阅读
0回复
0点赞
简单易懂
#include <iostream>
#include <iomanip>
#include <cmath>
#include <algorithm>
using namespace std;
long long a[100010],n,m;
bool c(long long lv){
long long cnt = 1,sum = 0;
for(int i = 1;i <= n;i++){
if(a[i] + sum <= lv){
sum += a[i];
}else if(a[i] > lv){
return 0;
}else{
sum = a[i];
cnt++;
}
}
return cnt <= m;
}
int main(){
ios::sync_with_stdio(false);
cin >> n >> m;
for(int i = 1;i <= n;i++){
cin >> a[i];
}
long long l = 1,r = 1e14,mid,ans = -1;
while(l <= r){
mid = (l+r)/2;
if(c(mid)){
ans = mid;
r = mid-1;
}else{
l = mid+1;
}
}
cout << ans;
return 0;
}
这里空空如也
有帮助,赞一个