哪位大神帮我看一下
#include<bits/stdc++.h>
using namespace std;
const int N = 100005;
long long n, m, a[N], l, r, mid, num, sum;
int find(long long k){
while(l <= r){
mid = (l+r) >> 1;
num = 0, sum = 0;
for(int i = 1;i <= n;i++){
if(num + a[i] <= mid){
num += a[i];
}
else{
sum++;
num = a[i];
}
}
if(sum >= k){
l = mid + 1;
}
else{
r = mid - 1;
}
}
return l;
}
int main(){
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i = 1;i <= n;i++){
cin >> a[i];
l = max(l, a[i]);
r += a[i];
}
sort(a+1, a+n+1);
cout << find(m);
return 0;
}