Pagini recente » Cod sursa (job #1417489) | Cod sursa (job #1816363) | Cod sursa (job #2826811) | Cod sursa (job #312378)
Cod sursa(job #312378)
#include<stdio.h>
#define X 16001
int n,k,v[X],sol=0;
int sum(int min)
{
int i,t=1,s=0;
for(i=1; i<=n; ++i)
if(s+v[i]<=min) s+=v[i];
else { ++t; s=v[i]; }
return t;
}
void srch(int st, int dr)
{
int mijl=st+(dr-st)/2;
if(sum(mijl)<=k)
{
sol=mijl;
if(st<=mijl-1) srch(st,mijl-1);
}
else if(mijl+1<=dr) srch(mijl+1,dr);
}
int main()
{
int i,sum=0,max=0;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1; i<=n; ++i)
{
scanf("%d",&v[i]);
sum+=v[i];
if(v[i]>max) max=v[i];
}
srch(max,sum);
printf("%d\n",sol);
return 0;
}