Pagini recente » Cod sursa (job #2651309) | Cod sursa (job #235687) | Cod sursa (job #318758) | Cod sursa (job #1088338) | Cod sursa (job #703659)
Cod sursa(job #703659)
#include <cstdio>
using namespace std;
long long dr=2000000000ll,st=1,mj,sol,n,k,logic=0,a[16005],ult,i,x;
bool merge(int c){
long long sum=0;long long transp=1;
int i;
for(i=1;i<=n;i++){
if(sum+a[i]>c){
if(a[i] > c) return false;
sum=a[i];
transp++;
if(transp>k)
return false;
}
else
sum+=a[i];
}
return (transp<=k);
};
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%lld",&n);
scanf("%lld",&k);
for(i=1;i<=n;i++)
scanf("%lld",&a[i]);
//merge(7);
while((st<=dr)){
mj=(st+dr)/2;
if(merge(mj)){
sol = mj;
dr = mj - 1;
}
else
st = mj + 1;
}
printf("%lld",sol);
}