Pagini recente » Cod sursa (job #1681374) | Cod sursa (job #2277984) | Cod sursa (job #279436) | Cod sursa (job #319364) | Cod sursa (job #282556)
Cod sursa(job #282556)
#include<stdio.h>
int n,k,i,v[16010],S=0,max=-1,s,d,m,k2,x,sol;
FILE *f=fopen("transport.in","r");
FILE *g=fopen("transport.out","w");
int ok(){
S = 0;
k2 = 0;
for (i=1;i<=n;i++)
if (S+v[i] <= m)
S += v[i];
else {
k2 = k2 + 1;
S = v[i];
}
k2++;
if (k2 <= k ) return 1;
return 0;
}
int main (){
fscanf(f,"%d %d",&n,&k);
for (i=1 ; i<=n ; i++){
fscanf(f,"%d",&v[i]);
S += v[i];
if (v[i] > max)
max = v[i];
}
s = max;
d = S;
while (s <= d){
m = s+(d-s)/2;
k2 = 0;
x = ok();
if (x == 1) {
sol = m;
d = m-1;
}
else s = m+1;
}
fprintf(g,"%d",sol);
fclose(f);
fclose(g);
return 0;
}