Pagini recente » Cod sursa (job #1892752) | Cod sursa (job #25200) | Cod sursa (job #807252) | Cod sursa (job #161360) | Cod sursa (job #98314)
Cod sursa(job #98314)
#include <stdio.h>
int a[16010],n,k,max,s,l,r,z,t;
int check(int m)
{
int i;
s=0;
t=0;
for (i=1; i<=n; ++i)
{
s+=a[i];
if (s>m)
{
++t;
s=a[i];
}
}
if (s>0) t=t+1;
if (t<=k) return 1;
else return 0;
}
int main()
{
freopen("transport.in","rt",stdin);
freopen("transport.out","wt",stdout);
scanf("%d %d",&n,&k);
int i;
max=0;
for (i=1; i<=n; ++i)
{
scanf("%d ",&a[i]);
if (max<a[i]) max=a[i];
s+=a[i];
}
z=-1;
l=max;
r=s;
while (l<=r)
{
if (check((l+r)/2)==1)
{
z=(l+r)/2;
r=(l+r)/2-1;
}
else
{
l=(l+r)/2+1;
}
}
printf("%d\n",z);
return 0;
}