Pagini recente » Borderou de evaluare (job #2022807) | Borderou de evaluare (job #1681311) | Borderou de evaluare (job #1444049) | Borderou de evaluare (job #1982703) | Cod sursa (job #234452)
Cod sursa(job #234452)
#include <stdio.h>
typedef unsigned int ui;
ui N, K, a[16002];
bool rez(ui maxload)
{
ui i, trload = 0, trips = 1;
for (i = 0; i != N && trips <= K; ++i) {
trload += a[i];
if (trload > maxload) {
trload = a[i];
++trips;
}
}
return trips <= K;
}
ui bin(ui l, ui r)
{
ui p, ans;
while(l <= r) {
p = (l + r) / 2;
//fprintf(stderr, "l: %d r: %2d p: %2d rez: %2d\n", l, r, p, rez(p));
if ( rez(p) ) {
r = p - 1;
ans = p;
}
else l = p + 1;
}
return ans;
}
int main()
{
ui x, s = 0, max = 0, i;
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d\n", &N, &K);
for (i = 0; i != N; ++i) {
scanf("%d\n", &x);
a[i] = x;
s += x;
if (max < x) max = x;
}
printf("%d\n", bin(max, s));
//fprintf(stderr, "%d\n", bin(max, s));
fclose(stdin);
fclose(stdout);
return 0;
}