Cod sursa(job #505349)

Utilizator radu_bucurRadu Bucur radu_bucur Data 1 decembrie 2010 20:24:40
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include <stdio.h>
int a[16001], n, s, i, max, min, mij, min1, nr, k;
int main(){
	freopen ("transport.in","r",stdin);
	freopen ("transport.out","w",stdout);
	scanf ("%d%d",&n,&k); min1=99999; min=0; 
	for (i=1;i<=n;i++){ 
		 scanf ("%d",&a[i]);
		 s=s+a[i];}
	max=s;
	while (min<=max){
		mij=(min+max)/2;
		nr=1; s=0;
		for (i=1;i<=n;i++){
			s=s+a[i];
			if (s>mij){nr++; s=a[i];}}
		if (nr>k){min=mij+1;}
		if (nr<=k){ if (mij<min1){min1=mij;}
					max=mij-1;}}
	printf ("%d",min1);
	return (0);
}