Cod sursa(job #732626)

Utilizator MutescuMutescu Alexandru Mutescu Data 10 aprilie 2012 18:54:59
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<cstdio>
using namespace std;
long long int a,v[16009],k,m,n,s=0,i,l,x=1,y,me,p;
bool hai(int u){
	long long int s=0,j=0,l=0;
	for(l=1;l<=n;l++){
		if(s+v[l]>u){
		    if(v[l]>u)
			  return false;
			j++;
			s=v[l];
			if(j>k)
				return false;}
		else
		 s+=v[l];
	}
	return (j<=k);
};

	
int main(){
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%lld %lld",&n,&k);
	for(i=1;i<=n;i++){
		scanf("%lld",&v[i]);
		s=s+v[i];}
	y=s;
	while(x<=y){
		me=(x+y)/2;
		if(hai(me)){
			p=me;
			y=me-1;}
		else
			x=me+1;
		
	}

	
	printf("%lld",p);
	return 0;
	
}