Cod sursa(job #482351)

Utilizator SzabiVajda Szabolcs Szabi Data 3 septembrie 2010 12:26:57
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <stdio.h>

int n,k,a[16001];


bool jo(int p){
int i=0,db=1,temp=0;

while((i<=n)&&(db<=k)){
	i++;
	if(a[i]>p){return false;}
	if(temp+a[i]<=p){temp+=a[i];}else{db++;temp=a[i];}

}


if((i==n+1)&&(db<=k)){return true;}else{return false;}

}


void bs(int lo,int hi){
int mid;

while(lo<hi){
mid=lo+(hi-lo)/2;

if(jo(mid)){hi=mid;}else{lo=mid+1;}

}

printf("%d",lo);

}

int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i;
scanf("%d %d",&n,&k);

for(i=1;i<=n;i++){scanf("%d",&a[i]);}

bs(1,n);

	return 0;}