Cod sursa(job #1009544)

Utilizator razvantomescurazvan tomescu razvantomescu Data 13 octombrie 2013 13:52:18
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
int main(){
	int v[16001],nr,sum,s,l1,l2,k,n,i,x;
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d%d",&n,&k);
	s=0;
	for(i=1;i<=n;i++){
		scanf("%d",&v[i]);
		s=s+v[i];
	}
	l1=1;
	l2=s;
	while(nr!=k&&l1!=l2){
		nr=0;
		i=1;
		sum=0;
		x=(l1+l2)/2;
		while(i<=n){
			
			if(sum+v[i]<=x)
				sum=sum+v[i];
			else{
				nr++;
				sum=v[i];
			}
			i++;
		}
		printf("%d\n",nr);
		if(nr<k){
			l2=(l1+l2)/2-1;
		}
		else
			if(nr>k)
			l1=(l1+l2)/2+1;
	}
	//while(nr==k){
	//	sum=0;
	//	x--;
	//	for(i=1;i<=n;i++)
	//		
	//		if(sum+v[i]<=x)
	//			sum=sum+v[i];
	//		else{
	//			nr++;
	//			sum=v[i];
	//		}
	//}
	printf("%d",x+1);
	return 0;
}