#include<stdio.h>
#include<stdlib.h>
int n,k;
int w[10001];
int check( long long p)
{
int j = 0;
int i = 0;
long long s = 0;
while ( j < k ){
s = 0;
// s += w[i];
while(1){
s += w[i];
if ( s > p )
{
break;
}
i++;
if( i == n)
return n;
}
j++;
}
return i;
}
long long solve()
{
long long right = 100000 * 10000;
long long left = 0;
long long mid;
while( left + 1 < right )
{
mid = (left + right) /2 ;
if(check( mid ) < n ) left = mid;
if(check( mid ) == n) right = mid;
}
return right;
}
int main()
{
scanf("%d %d",&n,&k);
for(int i = 0; i < n; i++){
scanf("%d",&w[i]);
}
printf("%lld\n",solve());
return 0;
}
ALLOCATION
最新推荐文章于 2023-12-04 13:08:12 发布