Cod sursa(job #609781)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 23 august 2011 12:16:11
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
Program transport;
 var i,n,k,max,s,mid:longint;
     a:array [1..16000] of integer;
     fi,fo: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(fi,'transport.in');
 reset(fi);
assign(fo,'transport.out');
 rewrite(fo);
readln(fi,n,k);
for i:=1 to n do begin
                  readln(fi,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(fo,max);
 close(fo);
end.