Cod sursa(job #108211)

Utilizator swift90Ionut Bogdanescu swift90 Data 21 noiembrie 2007 21:51:24
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
int vol[16100],k,n;
int trans(int mij){
	int i,x=0,s=0;
	for(i=0;i<n;++i){
		if(vol[i]+s<=mij)
			s+=vol[i];
		else{
			++x;
			s=vol[i];
		}
	}
	if(x<k)
		return 1;
	return 0;
}
int main(){
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	int i,p=0,u=0,mij;
	scanf("%d%d",&n,&k);
	for(i=0;i<n;++i){
		scanf("%d",&vol[i]);
		u+=vol[i];
		if(vol[i]>p)
			p=vol[i];
	}
	
	while(p!=u){
		mij=(p+u)/2;
		if(trans(mij))
			u=mij;
		else
			p=mij+1;
	}
	
	printf("%d\n",p);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}