Pagini recente » Cod sursa (job #522619) | Cod sursa (job #479064) | Cod sursa (job #1427080) | Cod sursa (job #297217) | Cod sursa (job #48134)
Cod sursa(job #48134)
#include<stdio.h>
long long max,s,a[16001],i,k,n;
long long ver(long long c)
{long long s=0,nr=1;
for(i=1;i<=n;i++)
{if(s+a[i]>c) {s=0;nr++;if(nr>k) return 0;}
s=s+a[i];}
return 1;}
long long caut(long long st,long long dr)
{long long mij=(st+dr)/2;
if(st==dr) return st;
if(ver(mij)) return caut(st,mij);
else return caut(mij+1,dr);}
int main()
{freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%lld %lld",&n,&k);
for(i=1;i<=n;i++)
{scanf("%lld",&a[i]);
if(a[i]>max) max=a[i];
s=s+a[i];}
if(k==1) printf("%lld",s);
else if(k>=n) printf("%lld",max);
else
printf("%lld",caut(max,s));
fclose(stdout);
return 0;}