Pagini recente » Cod sursa (job #147085) | Cod sursa (job #2751448) | Cod sursa (job #1892024) | Cod sursa (job #2263010) | Cod sursa (job #283489)
Cod sursa(job #283489)
#include <cstdio>
#define FIN "transport.in"
#define FOUT "transport.out"
#define N 16010
int n, k, sum, v[N], c;
void read()
{
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
{
scanf("%d", &v[i]);
sum += v[i];
}
}
int calc(int x)
{
int s = 0, t = 0;
for (int i = 1; i <= n; ++i)
{
if (s + v[i] > x)
{
++t;
s = 0;
}
s += v[i];
}
return t + 1;
}
void binarysearch()
{
int p, u = sum, m, x;
p = (sum % k) ? sum / k + 1 : sum / k;
while (p < u)
{
m = (p + u) / 2;
x = calc(m);
if (x <= k)
c = u = m;
else if (x > k)
p = m + 1;
}
c = p;
}
int main()
{
read();
binarysearch();
printf("%d\n", c);
}