Pagini recente » Cod sursa (job #2577028) | Cod sursa (job #2199897) | Cod sursa (job #628698) | Cod sursa (job #2256966) | Cod sursa (job #429735)
Cod sursa(job #429735)
#include<stdio.h>
int a[16001],k,n;
int sePoateTransporta (int x)
{
int transp=0,sum=99999,i;
for (i=1; i<=n; i++)
{
if (sum+a[i]>x && a[i]<=x)
{
transp++;
sum=a[i];
}
else if (sum+a[i]<=x) sum+=a[i];
if (a[i]>x) return 0;
if (transp>k) return 0;
}
return 1;
}
int main ()
{
int i,m,st,dr,s=0;
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]);
s+=a[i];
}
st=1; dr=s;
while (st<=dr)
{
m=(st+dr)/2;
if (sePoateTransporta(m))
dr=m-1;
else st=m+1;
}
printf("%d",m);
return 0;
}