Cod sursa(job #1453308)

Utilizator ianic1999Ianic Umanschii ianic1999 Data 23 iunie 2015 11:00:23
Problema Transport Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.79 kb
var t:array[1..16000]of integer;
    min,max,x,sum,n,i,k,tr,m:longint;
    ok:boolean;
begin

 assign(input,'transport.in');
 reset(input);
  readln(n,k);
  m:=0;
   sum:=0;
  for i:=1 to n do
   begin
    read(t[i]);
    sum:=sum+t[i];
    if t[i]>m then m:=t[i];
   end;
 close(input);

  max:=sum;
  min:=max div k;
  if min<m then min:=m;
  while min<max do
   begin
    x:=(min+max) div 2;
    sum:=0;
    tr:=0;
    i:=1;
    sum:=0;
    while (i<=n)and(tr<k) do
     begin
      while (sum+t[i]<=x)and(i<=n) do begin sum:=sum+t[i];i:=i+1;end;
      tr:=tr+1;
      sum:=t[i];
      i:=i+1;
     end;
    tr:=tr+1;
    if tr>k then min:=min+1
            else max:=x;
   end;

 assign(output,'transport.out');
 rewrite(output);
  write(min);
 close(output);
end.