Pagini recente » Cod sursa (job #3141052) | Cod sursa (job #2519991) | Cod sursa (job #2662038) | Cod sursa (job #1398109) | Cod sursa (job #249057)
Cod sursa(job #249057)
// Arhiva de probleme - transport
var
n,k,i,x,max,s,stg,drp,mid : longint;
st : array [1..16000] of longint;
f : text;
function trans (vol:longint):boolean;
var
vf, nr, s, x : longint;
begin
vf := 1;
nr := 1;
s := 0;
trans := false;
while (vf <= n) do
begin
x := st[vf];
if (s + x <= vol) then
s := s + x
else
begin
s := x;
inc(nr);
if (nr > k) then exit;
end;
inc (vf);
end;
trans:= true;
end;
begin
assign (f, 'transport.in');
reset (f);
readln (f, n, k);
max := 0;
s := 0;
for i := 1 to n do
begin
readln (f, x);
if (max < x) then max := x;
s := s + x;
st[i] := x;
end;
close (f);
// pt 40
// for x := max to s do
// if (trans(x) = true) then
// break;
// pt 100 (teoretic, ca imi da 80..)
stg := max;
drp := s;
while (stg<=drp) do
begin
mid := stg + (drp-stg) shr 1;
if (trans(mid) = true) then
drp := mid-1
else
stg := mid+1;
end;
assign (f, 'transport.out');
rewrite (f);
writeln (f, mid);
close (f);
end.