Cod sursa(job #1453312)

Utilizator ianic1999Ianic Umanschii ianic1999 Data 23 iunie 2015 11:08:50
Problema Transport Scor 60
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.88 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;
    while (i<=n)and(tr<k) do
     begin
      if sum+t[i]<=x then sum:=sum+t[i]
                     else
                      begin
                       tr:=tr+1;
                       sum:=t[i];
                      end;
                     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.