Pagini recente » Cod sursa (job #2897262) | Cod sursa (job #48060) | Cod sursa (job #1238361) | Cod sursa (job #2098467) | Cod sursa (job #88646)
Cod sursa(job #88646)
#include <stdio.h>
#define NMAX 16666
int V[NMAX];
int i, N, K, li, ls, S, Cc, T, C;
int main()
{
freopen("transport.in", "r", stdin);
scanf("%d %d", &N, &K);
for (C = i = 0; i < N; i++)
{
scanf("%d", &V[i]);
C += V[i];
}
li = 1; ls = C;
while (li <= ls)
{
S = (li + ls) >> 1;
T = 0; Cc = S + 1;
for (i = 0; i < N; i++)
{
if (V[i] > S)
{
T = K + 1;
break;
}
if (Cc + V[i] <= S)
Cc += V[i];
else
{
T++;
Cc = V[i];
}
}
if (T <= K)
C = S, ls = S - 1;
else
li = S + 1;
}
freopen("transport.out", "w", stdout);
printf("%d\n", C);
return 0;
}