Pagini recente » Cod sursa (job #1814267) | Cod sursa (job #575526) | Cod sursa (job #756701) | Cod sursa (job #2115070) | Cod sursa (job #428265)
Cod sursa(job #428265)
#include<stdio.h>
#define Nmax 16005
int n, k, i, cap, p, u, m, max = 0, S;
int v[Nmax];
int pot (int m){
int cap = 0, nr = 0;
for (i = 1 ; i <= n ; i++){
if (cap + v[i] < m)
cap += v[i];
else {
nr++;
cap = v[i];
}
}
if (nr <= k) return 1;
return 0;
}
int main (){
FILE * f = fopen ("transport.in", "r");
FILE * g = fopen ("transport.out", "w");
fscanf (f, "%d %d", &n, &k);
for (i = 1 ; i <= n ; i++){
fscanf(f, "%d", &v[i]);
if (max < v[i])
max = v[i];
S += v[i];
}
p = max;
u = S;
while (p <= u){
m = (p + u)/2;
if (pot(m))
u = m-1;
else
p = m+1;
}
fprintf(g, "%d", p);
fclose(f);
fclose(g);
return 0;
}