Cod sursa(job #137143)

Utilizator za_wolfpalianos cristian za_wolf Data 16 februarie 2008 23:23:11
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include<stdio.h>
#define NMAX 16001
long x[NMAX],in,sf,mm,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;
			mm=m;
		}
		else
			in=m+1;
	}
	printf("%ld\n",mm);


	return 0;
}