Cod sursa(job #1009545)

Utilizator razvantomescurazvan tomescu razvantomescu Data 13 octombrie 2013 13:58:50
Problema Transport Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 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){
		nr=1;
		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;
}