Cod sursa(job #131276)

Utilizator vladianavladiana micu vladiana Data 3 februarie 2008 15:52:09
Problema Transport Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.09 kb
var fi,fo:text;
    n,k,i,j,s,max,nrtr:longint;
    v:array[1..16000]of integer;
function verif(k:longint; var trans:longint):boolean;
var i,suma:longint;
begin
  trans:=0; suma:=0;
  for i:=1 to n-1 do
    if v[i]+suma<=k then suma:=suma+v[i]
      else
        begin
          suma:=v[i];
          inc(trans);
        end;
  if suma+v[n]>k then inc(trans,2)
                 else inc(trans);
  if trans<=nrtr then verif:=true
                 else verif:=false;
end;
function find(st,dr:longint):longint;
var mij,trans:longint;
begin
  while st<=dr do
    begin
      mij:=(st+dr) shr 1;
      if verif(mij,trans) then
        begin
          find:=mij;
          dr:=mij-1;
        end
     else
      if trans>nrtr then st:=mij+1;
     end;
end;
begin
  assign(fi,'transport.in'); reset(fi);
  assign(fo,'transport.out'); rewrite(fo);
  read(fi,n,nrtr);
  max:=0; s:=0;
  if nrtr>n then nrtr:=n;
  for i:=1 to n do
    begin
      read(fi,v[i]);
      s:=s+v[i];
      if v[i]>max then max:=v[i];
    end;
  writeln(fo,find(max,s));
  close(fi);
  close(fo);
end.