为什么80分?
记录
题目
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100001];
int c(long long x){
int sum=0,t=a[1];
for(int i=2;i<=n;i++){
if(t+a[i]>x){
t=a[i];
sum++;
}
else{
t+=a[i];
}
}
if(sum>=m)return 1;
else return 0;
}
int main(){
cin>>n>>m;
long long l=1,r=0;
for(int i=1;i<=n;i++){
cin>>a[i];
l=max(a[i],l);
r+=a[i];
}
while(l+1!=r){
long long m=(l+r)/2;
if(c(m)){
l=m;
}
else{
r=m;
}
}
cout<<r;
return 0;
}