Pagini recente » Cod sursa (job #425144) | Cod sursa (job #2113423) | Cod sursa (job #38635) | Cod sursa (job #1190588) | Cod sursa (job #1803381)
#include <stdio.h>
#include <iostream>
using namespace std;
int v[16001];
int main(){
freopen("transport.in","r", stdin);
freopen("transport.out","w",stdout);
int n, k, i, l1=0, l2=0, m, a, sum, tr;
cin>>n>>k;
for(i=0;i<n;i++) {
cin>>v[i];
l2 += v[i];
if(v[i]>l1)
l1=v[i];
}
while(l1 != l2) {
m=(l1+l2)/2;
sum=0;
tr=1;
for(i=0;i<n && tr<=k;i++) {
if(v[i] + sum <= m )
sum+=v[i];
else{
tr++;
sum=v[i];
}
}
if(tr>k)
l1=m+1;
else
l2=m;
}
cout<<l1;
return 0;
}