Pagini recente » Cod sursa (job #2269600) | Cod sursa (job #684442) | Cod sursa (job #1168275) | Cod sursa (job #2036180) | Cod sursa (job #279343)
Cod sursa(job #279343)
#include <stdio.h>
#define DIM 16001
int S[DIM];
int i,n,k,c,maxS,sumS,p,u,sol;
FILE *f = fopen("transport.in", "r");
FILE *g = fopen("transport.out", "w");
int verif(int c) {
int nt, tc;
nt = 1;
tc = 0;
for (i=1; i<=n; i++) {
if (tc + S[i] <= c)
tc += S[i];
else {
tc = S[i];
nt++;
}
}
if (nt <= k)
return 1;
else
return 0;
}
int main(){
fscanf(f,"%d %d",&n,&k);
for (i=1; i<=n; i++) {
fscanf(f,"%d",&S[i]);
if (S[i] > maxS)
maxS = S[i];
sumS += S[i];
}
p = maxS;
u = sumS;
while (p<=u) {
c = p + (u-p)/2;
if (verif(c)) {
sol = c;
u = c-1;
}
else
p = c+1;
}
fprintf(g,"%d",sol);
fclose(f);
fclose(g);
return 0;
}