Cod sursa(job #49477)

Utilizator fogabFodor Gabor fogab Data 5 aprilie 2007 19:56:48
Problema Lapte Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.28 kb
var f:text;
    a,a2:array[0..100,0..100] of word;
    la,lb,ua,ub:array[1..100] of word;
    ba,bb:array[0..11000] of word;
    n,m,i,k1,k2,mij,xx,yy:word;
    r:word;

function ok(t:byte):boolean;
var i,j,l,h,x,y:word;
    k,k2:word;
begin
k:=0;
k2:=0;
fillchar(a2,sizeof(a2),0);
for i:=1 to n do
  begin
  k:=k2;
  for j:=0 to (t div la[i]) do
    begin
    h:=(t-j*la[i]) div lb[i];
    for l:=0 to k do
      begin
      x:=ba[l]+j;
      y:=bb[l]+h;
      if (x>m) then x:=m;
      if (y>m) then y:=m;
      if a2[x,y]=0 then
         begin
         a[x,y]:=l;
         a2[x,y]:=i;
         inc(k2);
         ba[k2]:=x;
         bb[k2]:=y;
         end;
      end;
    end;
    end;
if a2[m,m]<>0 then ok:=true
   else ok:=false;
end;

begin
assign(f,'lapte.in');
reset(f);
read(f,n,m);
for i:=1 to n do read(f,la[i],lb[i]);
close(f);
k1:=1;
k2:=100;
while k2-k1>1 do
  begin
  mij:=(k2+k1) shr 1;
  if ok(mij) then k2:=mij
     else k1:=mij;
  end;
ok(k1+1);
r:=1;
xx:=m;yy:=m;
while r<>0 do
  begin
    r:=a[xx,yy];
    ua[a2[xx,yy]]:=xx-ba[r];
    ub[a2[xx,yy]]:=yy-bb[r];
    xx:=ba[r];
    yy:=bb[r];
  end;
assign(f,'lapte.out');
rewrite(f);
writeln(f,k1+1);
for i:=1 to n do
  writeln(f,ua[i],' ',ub[i]);
close(f);
end.