Cod sursa(job #815587)

Utilizator ASTELOTudor Enescu ASTELO Data 17 noiembrie 2012 11:14:26
Problema Transport Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.55 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],cn;
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=1;
	for(i=1;i<=n;i++)
		{
		if(s+v[i]<=nr)
			s+=v[i];
		else
			{w++;
			s=v[i];
			}
		}
	if(w<=k)
		l2=nr-1;
	else
		l1=nr+1;
	if(w==k)
	cn=nr;
	}
if(w!=k)
	nr=cn;
if(nr<max)
	nr=max;
printf("%d",nr);
return 0;
}