Pagini recente » Cod sursa (job #578992) | Cod sursa (job #2543117) | Cod sursa (job #236732) | Cod sursa (job #428074) | Cod sursa (job #1495082)
#include <stdio.h>
using namespace std;
int v[16001];
int caut(int li, int ls, int k, int n)
{
int m, ok=1, d=0, s=0, i;
while(li<=ls)
{
m=(li+ls)/2;
for(i=1;i<=n && ok;i++)
{
if(s+v[i]<=m)
{
s+=v[i];
}
else
{
d++;
s=0;
s+=v[i];
}
if(d>k)
{
ok=0;
}
}
ok=1;
s=0;
if(d<=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;
}