Pagini recente » Cod sursa (job #965537) | Cod sursa (job #1981025) | Cod sursa (job #2326614) | Cod sursa (job #376775) | Cod sursa (job #1500670)
#include <stdio.h>
using namespace std;
int v[16001];
int caut(int li, int ls, int k, int n)
{
int m, s, i, nrd=0;
while(li<=ls)
{
m=(li+ls)/2;
s=nrd=0;
for(i=1;i<=n && nrd<=k;i++)
{
if(s+v[i]<=m)
{
s+=v[i];
}
else
{
nrd++;
s=0;
i--;
}
}
nrd++;
if(nrd<=k)
ls=m-1;
else li=m+1;
}
return m;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n, k, i, cmax=0, cmin=0;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
if(v[i]>cmin)
cmin=v[i];
cmax+=v[i];
}
printf("%d",caut(cmin,cmax,k,n));
return 0;
}