Pagini recente » Cod sursa (job #2945802) | Cod sursa (job #1769930) | Cod sursa (job #1133952) | Cod sursa (job #2722262) | Cod sursa (job #371057)
Cod sursa(job #371057)
#include <stdio.h>
#define Nmax 16100
int n,k,final,a[Nmax],sum,max;
int check(int x)
{
int i,q=k,suma=0;
for(i=1;i<=n;++i)
if(suma+a[i]>x)
{
q--;
suma=a[i];
}
else
suma+=a[i];
if(q>=1)
{
return 0;
}
return 1;
}
void cauta(int st,int dr)
{
int mid=(st+dr)/2;
if(st>dr)
return ;
if(st==dr)
final=mid;
if(check(mid))
{
cauta(mid+1,dr);
}
else
cauta(st,mid);
}
int main()
{
int i;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]);
sum+=a[i];
if(max<a[i])
max=a[i];
}
cauta(max,sum);
printf("%d\n",final);
return 0;
}