Pagini recente » Cod sursa (job #2968377) | Cod sursa (job #157825) | Cod sursa (job #531869) | Cod sursa (job #2942550) | Cod sursa (job #371076)
Cod sursa(job #371076)
#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>0)
return 0;
return 1;
}
void cauta(int st,int dr)
{
int mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(check(mid))
st=mid+1;
else
{
dr=mid-1;
final=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;
}