Pagini recente » Cod sursa (job #785426) | Cod sursa (job #1905253) | Cod sursa (job #2253388) | Cod sursa (job #940836) | Cod sursa (job #782978)
Cod sursa(job #782978)
#include<stdio.h>
FILE *f=fopen("transport.in","r"),*g=fopen("transport.out","w");
long int n,k,v[16001],max=-1,s=0;
void citire(){
long int i;
fscanf(f,"%ld %ld\n",&n,&k);
for(i=1; i<=n; i++){
fscanf(f,"%ld\n",&v[i]);
if(v[i]>max){max=v[i];}
s+=v[i];
}
}
void cauta_binar(){
long int st,dr,mij=0,i,sum=0,nrp=0,rez;
st=max; dr=s;
while(st<=dr){
mij=(st+dr)/2;
sum=0; nrp=1;
for(i=1; i<=n; i++){
sum+=v[i];
if(sum>mij){
nrp++;
sum=v[i];
}
if(nrp>k){
st=mij+1;
break;
}
}
if(nrp<=k){
rez=mij;
dr=mij-1;
}
}
fprintf(g,"%ld",rez);
}
int main(){
citire();
cauta_binar();
return 0;
}