Pagini recente » Cod sursa (job #2037651) | Cod sursa (job #1834339) | Cod sursa (job #2396653) | Cod sursa (job #1737633) | Cod sursa (job #1666356)
#include <cstdio>
using namespace std;
int s[16001];
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i,n,d,l1,l2,m,k,cap,min=-1;
scanf("%d%d",&n,&d);
for(i=1;i<=n;i++){
scanf("%d",&s[i]);
if(s[i]>=min)
min=s[i];
}
l1=min;
l2=256000000;
while(l1<=l2){
m=(l1+l2)/2;
cap=0;
k=1;
for(i=1;i<=n;i++){
if(cap+s[i]<=m){
cap=cap+s[i];
}
else {
k++;
cap=s[i];
}
}
if(k<=d){
l2=m-1;
}
else{
l1=m+1;
}
}
printf("%d",m);
}