Cod sursa(job #429750)

Utilizator mironalex2005Alexandru Miron mironalex2005 Data 30 martie 2010 13:50:52
Problema Transport Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.97 kb
var f,g:text;
    a:array[1..16000] of longint;
    i,n,c,k,s,max:longint;

function pos(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;
     pos:=cam;
end;
function cautare(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:=pos(mij);
      if p>k then st:=mij+1
      else begin
             dr:=mij-1;
             sol:=mij;
             end;
     end;
     cautare:=sol;
end;
begin
assign(f,'transport.in');reset(f);
assign(g,'transport.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:=cautare(max,s);
writeln(g,c);
close(g);
end.