Pagini recente » Cod sursa (job #1177058) | Cod sursa (job #2724531) | Cod sursa (job #2823124) | Cod sursa (job #2624319) | Cod sursa (job #354825)
Cod sursa(job #354825)
#include<stdio.h>
int v[10000],max,min,K,N,st,dr,mid,ok,ifin;
int test(int x)
{
if(min>x)
return 0;
int k=K,mult=0;
for(int i=1;i<=N;++i)
{
if(mult+v[i]>x)
{
mult=v[i];
--k;
}
else
mult=mult+v[i];
if(k==0)
return 0;
}
return 1;
}
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",&v[i]);
max=max+v[i];
if(min<v[i])
min=v[i];
}
st=1;
dr=max;
while(st<=dr)
{
mid=(st+dr)/2;
ok=test(mid);
if(ok==1)
{
dr=mid-1;
ifin=mid;
}
if(ok==0)
st=mid+1;
}
printf("%d",ifin);
}