Cod sursa(job #801680)

Utilizator tibi2012Galatanu Tiberiu tibi2012 Data 24 octombrie 2012 19:43:37
Problema Transport Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.77 kb
var i,n,k,max,s,mid:longint;
    a:array [1..16000] of longint;
    f,g:text;
function control(p:longint):boolean;
var i,j,s:longint;
begin
  s:=0;
  j:=0;
  control:=false;
  for i:=1 to n do
    if s+a[i]<=mid then
      s:=s+a[i]
    else
      begin
        s:=a[i];
        inc(j);
      end;
  if j<k then
    control:=true
  else
    control:=false;
end;

begin
  assign(f,'transport.in');
  assign(g,'transport.out');
  reset(f);
  rewrite(g);
  readln(f,n,k);
  for i:=1 to n do
    begin
      readln(f,a[i]);
      s:=s+a[i];
      if a[i]>max then
        max:=a[i];
    end;
  repeat
    mid:=(max+s) div 2;
    if control(mid) then
      s:=mid
    else
      max:=mid+1;
  until max=s;
  write(g,max);
  close(f);
  close(g);
end.