Cod sursa(job #815563)

Utilizator ASTELOTudor Enescu ASTELO Data 17 noiembrie 2012 10:51:30
Problema Transport Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 0.48 kb
#include<stdio.h>
int main ()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n,k,l1,l2=0,m,i,max=0,nr,s=0,w,v[16001];
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
	{scanf("%d",&v[i]);
	if(v[i]>max)
		max=v[i];
	l2+=v[i];
	}
l1=max-1;
l2++;
while(l1<=l2)
	{nr=(l1+l2)/2;
	s=0;
	w=0;
	for(i=1;i<=n-1;i++)
		{s=s+v[i];
		if(s+v[i+1]>nr)
			{w++;
			s=0;
			}
		}
	m=w+1;
	if(m<=k)
		l2=nr-1;
	else
		l1=nr+1;
	}
printf("%d",nr);
return 0;
}