Cod sursa(job #177513)

Utilizator chelaru_t_achelaru traian andrei chelaru_t_a Data 13 aprilie 2008 10:57:18
Problema Transport Scor 40
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.01 kb
type vector=array [1..16000] of integer;
var n,k,vol:integer;
  v:vector;
  ok:boolean;
  f,t:text;

 procedure citire;
  var i:integer;
  begin
   readln(f,n,k);
   for i:=1 to n do readln(f,v[i]);
  end;

 function max:integer;
  var i,m:integer;
  begin
   m:=v[1];
   for i:=2 to n do
     if v[i]>m then m:=v[i];
   max:=m;
  end;

 procedure volbun;
  var i,l,s:integer;
    da:boolean;
  begin
   i:=0;
   l:=0;
   ok:=false;
   da:=true;
   repeat
   s:=0;
   while (s<=vol) and (i<n) do
     begin
     i:=i+1;
     s:=s+v[i];
     end;
   if s>vol then
     begin
     l:=l+1;
     i:=i-1;
     end
   else if i=n then l:=l+1;
   if l>k then da:=false;
   until (i=n) or (not da);
   if l<=k then ok:=true;
  end;

begin
  assign(f,'transport.in');
  assign(t,'transport.out');
  reset(f);
  rewrite(t);
  citire;
  vol:=max;
  ok:=false;
  while not ok do
    begin
    volbun;
    if not ok then vol:=vol+1;
    end;
  write(t,vol);
  close(f);
  close(t);
end.