Cod sursa(job #703084)

Utilizator t.valentinoRemus Tumac t.valentino Data 2 martie 2012 10:51:29
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<cstdio>
using namespace std;
 
long long int n,k,v[16000],dmax,dmin,x,verif,j,d;
 
bool verifk (int a)
{   int ans = 1;
	int i , s = 0;

	for (i=1;i<=n;i++){
	if (s + v[i] > a){
	s=v[i];
	ans++;
	if (ans>k) return false;
	}
	else s+=v[i];
	}
	return (ans <= k);
}
 
int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%lld %lld",&n,&k);
	
	for (j=1;j<=n;j++)
		scanf("%lld",&v[j]);
	dmin=0;
	dmax=2000000000;
	
	while (dmin!=dmax&&dmin<=dmax){
		d=(dmin+dmax)/2;
		verif=verifk(d);
		if (verif==0)
			dmin=d;
		else
			dmax=d;
	}
	
	while (verif==0){
		verif=verifk(dmin);
		if (verif==0) dmin++;
	}
	printf("%lld",dmin);
	return 0;
}