Pagini recente » Cod sursa (job #2197794) | Cod sursa (job #1855671) | Cod sursa (job #1583383) | Cod sursa (job #1656913) | Cod sursa (job #318852)
Cod sursa(job #318852)
#include <stdio.h>
int e[16001];
int n,k,max=0,suma=0,st,dr,mij,rez=100000;
int ver(int mijloc)
{
int a=mijloc,nr=1;
for(int 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("%d %d",&n,&k);
for(int 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))
{
if(mij<rez)
rez=mij;
dr=mij-1;
}
else
st=mij+1;
}
printf("%d",rez);
return 0;
}