Cod sursa(job #803796)

Utilizator tibi2012Galatanu Tiberiu tibi2012 Data 28 octombrie 2012 12:10:24
Problema Lapte Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.53 kb
var f,g: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,r:word;

function ok(t:byte):boolean;
var i,j,l,h,x,y,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(g,'lapte.out');
  rewrite(g);
  writeln(g,k1+1);
  for i:=1 to n do
    writeln(g,ua[i],' ',ub[i]);
  close(g);
end.