Cod sursa(job #137141)

Utilizator za_wolfpalianos cristian za_wolf Data 16 februarie 2008 23:14:59
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include<stdio.h>
#define NMAX 16005
long x[NMAX],in,sf,m,n,a,t,s,k,i,j,l,q;
int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%ld%ld",&n,&k);
	in=-1;
	for (i=1;i<=n;i++)
	{
		scanf("%ld",&x[i]);
		sf+=x[i];
		if (in<x[i]) in=x[i];
	}
	while (in<=sf)
	{
		m=(in+sf)/2;
		a=1;
		s=0;
		t=1;
		for (i=1;i<=n;i++)
		{
			s+=x[i];
			if (s>m) {s=0; i--; t++;}
		}
		if (t<=k)
			sf=m-1;
		else
			in=m+1;
	}
	printf("%ld\n",m);


	return 0;
}