Cod sursa(job #825802)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 29 noiembrie 2012 17:18:04
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<cstdio>
using namespace std;
int mij,n,i,j,k,m,min,max,a[16006],rez,sum;

int bin(int st,int dr)
{
	bool ok=true;int s1=0,k1=1;
	if (st<dr) 
		{
			mij=(st+dr)/2;
			for (i=1;i<=n;i++) 
			if (s1+a[i]<=mij) s1+=a[i];		
			else k1++,s1=a[i];
			if (k1<=k) return bin(st,mij-1);else return bin(mij+1,dr);
	}else return st;
}

int main()
{
	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]);
		if (max<a[i]) max=a[i];
		sum+=a[i];
	}
	printf("%d",bin(max,sum));
	return 0;
}