Pagini recente » Cod sursa (job #2023889) | Cod sursa (job #1067895) | Cod sursa (job #985216) | Cod sursa (job #2356263) | Cod sursa (job #322562)
Cod sursa(job #322562)
#include <stdio.h>
#define DIM 16011
int V[DIM];
int n,k,p,u,i,s,m;
int can(int cap){
int cc = 0;
int nr = 1;
for (i=1;i<=n;i++) {
if (V[i]>cap)
return 0;
if (cc+V[i]<=cap) {
cc+=V[i];
} else {
nr++;
cc = V[i];
}
if (nr>k) return 0;
}
return nr<=k;
}
int main(){
FILE *f = fopen("transport.in","r");
fscanf(f,"%d %d",&n,&k);
for (i=1,s=0;i<=n;i++){
fscanf(f,"%d",&V[i]);
s+=V[i];
}
fclose(f);
p = 1; u = s;
while (p<=u) {
m = p+(u-p)/2;
if (can(m))
u = m-1;
else
p = m+1;
}
FILE *g = fopen("transport.out","w");
fprintf(g,"%d",p);
fclose(g);
return 0;
}