Pagini recente » Cod sursa (job #2574479) | Cod sursa (job #2365705) | Cod sursa (job #35867) | Cod sursa (job #1256342) | Cod sursa (job #686809)
Cod sursa(job #686809)
#include <cstdio>
using namespace std;
long long dr=2000000000ll,st=1,mj,sol,n,k,logic=0,a[16005],ult,i;
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){
transp++;
sum=a[i];
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)&&(logic!=1)){
mj=(st+dr)/2;
if(merge(mj)!=0){
dr=mj-1;
if(ult==1){
logic=1;
sol=mj;
}
}
else{
st=mj+1;
ult=1;
}
}
while(merge(sol)!=0)
sol--;
sol++;
printf("%lld",sol);
}