Pagini recente » Cod sursa (job #2030329) | Cod sursa (job #2224525) | Profil MoraruLiviu | Cod sursa (job #772215) | Cod sursa (job #318856)
Cod sursa(job #318856)
#include <stdio.h>
int e[16001];
long long n,k,max=0,suma=0,st,dr,mij,rez=100000;
int ver(int mijloc)
{
long long a=mijloc,nr=1;
for(long long i=1;i<=n;i++)
if(e[i]<=a)
a=a-e[i];
else
{
a=mijloc-e[i];
nr++;
}
if(nr<=k)
return 1;
else
return 0;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%lld %lld",&n,&k);
for(long long i=1;i<=n;i++)
{
scanf("%d",&e[i]);
if(e[i]>max)
max=e[i];
suma=suma+e[i];
}
st=max;dr=suma;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(ver(mij))
{
rez=mij;
dr=mij-1;
}
else
st=mij+1;
}
printf("%lld",rez);
return 0;
}