Pagini recente » Cod sursa (job #1397908) | Cod sursa (job #738728) | Cod sursa (job #1696946) | Cod sursa (job #606593) | Cod sursa (job #1100058)
#include <cstdio>
using namespace std;
long n,k,a[16001],i;
bool ok (long P)
{
long s=0,i,nr=1;
for(i=1;i<=n;i++)
{
s+=a[i];
if(s>P){
nr++;
s=a[i];
}
}
if(nr>k)
return 0;
return 1;
}
long bs(long st,long dr)
{
long med, last=-1;
while(st<=dr)
{
med=st+((dr-st)>>1);
if(ok(med))
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%ld%ld",&n,&k);
long s=0;
for(i=1;i<=n;i++)
{
scanf("%ld",&a[i]);
s+=a[i];
}
printf("%ld\n",bs(1,s));
return 0;
}