Pagini recente » Cod sursa (job #2610007) | Cod sursa (job #1678154) | Cod sursa (job #2624075) | Cod sursa (job #2424431) | Cod sursa (job #1560965)
#include <cstdio>
using namespace std;
int v[50001];
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n, k, i, j, t, s, ma, mi, mid;
ma = 0;
mi = 0;
scanf("%d%d",&n,&k);
for( i = 1; i <= n; ++i ){
scanf("%d",&v[i]);
ma += v[i];
if( v[i] > mi ) mi = v[i];
}
while( mi != ma ){
mid = ( mi + ma ) / 2;
s = 0;
t = 1;
for( i = 1; i <= n && t <= k; ++i ){
if( v[i] + s > mid ){
t++;
s = v[i];
}
else s += v[i];
}
if( t > k ) mi = mid + 1;
else ma = mid;
}
printf("%d",ma);
return 0;
}