Cod sursa(job #505350)

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

for(i=1;i<=n; ){        
s=0; 
while(s+v[i]<=mij&&i<=n){      
s+=a[i];i++; 
} 
nr++; 



*/