Cod sursa(job #428944)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 29 martie 2010 18:25:01
Problema Transport Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.06 kb
program p1;
var f,g:text;
    a:array[1..16000]of longint;
    i,n,c,k,s,max:longint;

function posibilitati(x:longint):longint;
var i,cam,sum:longint;
begin
     cam:=1;sum:=0;
     for i:=1 to n do
     if sum+a[i]<=x then sum:=sum+a[i]
        else begin
                  sum:=a[i];
                  cam:=cam+1;
             end;
     posibilitati:=cam;
end;

function cauta(x1,y1:longint):longint;
var st,dr,mij,p,sol:longint;
begin
     st:=x1;dr:=y1;sol:=0;
     while st<=dr do
     begin
          mij:=(st+dr) div 2;
          p:=posibilitati(mij);
          if p>k then st:=mij+1
             else begin dr:=mij-1;sol:=mij;end;
     end;
     cauta:=sol;
end;

begin
     assign(f,'tran.in');reset(f);
     assign(g,'tran.out');rewrite(g);
     read(f,n,k);
     read(f,a[1]);
     if k>n then k:=n;
     s:=a[1];max:=a[1];
     for i:=2 to n do
     begin
          read(f,a[i]);
          s:=s+a[i];
          if a[i]>max then max:=a[i];
     end;
     c:=cauta(max,s);
     writeln(g,c);
     close(f);
     close(g);
end.