Pagini recente » Cod sursa (job #2835591) | Cod sursa (job #427083) | Cod sursa (job #890729) | Cod sursa (job #3173431) | Cod sursa (job #520761)
Cod sursa(job #520761)
#include <stdio.h>
FILE *f=fopen("transport.in","r");
FILE *g=fopen("transport.out","w");
int n,v[16001],k;
int vmax,smax;
bool pot(int c){
int register t,cc=0,i;
t=1;
for(i=1;i<=n;i++){
if(v[i]+cc<=c){
cc+=v[i];
}
else{
t++;
cc=v[i];
}
if(t>k)
return false;
}
return true;
}
int main(void){
int register i,j;
fscanf(f,"%d %d",&n,&k);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
if(v[i]>vmax)
vmax=v[i];
smax+=v[i];
}
int register p,u,m;
p=vmax; u=smax;
while(p<=u){
m=p+(u-p)/2;
if(pot(m)){
u=m-1;
}
else
p=m+1;
}
fprintf(g,"%d",p);
return 0;
}