Cod sursa(job #311503)

Utilizator FllorynMitu Florin Danut Flloryn Data 3 mai 2009 16:33:29
Problema Transport Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1 kb
    var f,g:text;  i,sol,n,max,s,k:Longint;  v:array[1..16000] of longint;  

    function ok(x:longint):boolean;  
    var i,t,con:longint;  
    begin  
     i:=0; t:=0;  
     while i<=n do 
            begin  
            con:=0;  
            while con<x do begin  inc(i); con:=con+v[i]; end;  
            if con>x then begin dec(con,v[i]); dec(i); end;  
            inc(t);  
            end;  
   ok:=(t<=k);  
   end;  

   procedure cauta(st,dr:longint);  
   var x:longint;  
   begin  
   x:=st+(dr-st) div 2;  
   if ok(x) then begin  
                 sol:=x;  
                 if st<=x-1 then cauta(st,x-1);  
                end  
             else cauta(x+1,dr);  
   end;  

   begin  
   assign(f,'transport.in'); reset(f);  
   assign(g,'transport.out'); rewrite(g);  
   read(f,n,k);  
   s:=0;  
   for i:=1 to n do begin  
   read(f,v[i]); s:=s+v[i];  
   if v[i]>max then max:=v[i];  
   end;  
   cauta(max,s);  
   write(g,sol);  
   close(g);  
  end.