Cod sursa(job #129884)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 30 ianuarie 2008 15:29:43
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<stdio.h>
#define N 16010
int v[N];
int main(){
	int c,n,i,k,s,a,b,u,m;
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(i=1;i<=n;++i){
		scanf("%d",&v[i]);
		if (m<v[i])
			m=v[i];
		s+=v[i];
	}
	a=1;  
	b=s; 
	while (b-a>1){
		c=(a+b)/2+(a+b)%2;
		s=0;
		u=1;
		for (i=1;i<=n;++i){
			s=s+v[i];
			if (s>c){
				++u;
				s=v[i];
			}
		}
		if (u>k || c<m)
			a=(a+b)/2+(a+b)%2;
		else 
			b=(a+b)/2+(a+b)%2;
	}
	printf("%d",(a+b)/2+(a+b)%2);
	return 0;
}