NKSTEP - Chuyển

Tác giả: RR

Ngôn ngữ: Pascal

{$R+,Q+}
{$Mode objFPC}
uses math;
const
  FINP='';
  FOUT='';
  oo=50001;
var
  f1,f2:text;
  x,y,i,test,kq,dist:longint;
procedure openF;
begin
  assign(f1,FINP); reset(f1);
  assign(f2,FOUT); rewrite(f2);
end;
procedure closeF;
begin
  close(f1);
  close(f2);
end;
function find:longint;
var
  l,r,mid,kq:longint;
begin
  l:=1; r:=oo; kq:=0;
  repeat
    mid:=(l+r)>>1;
    if sqr(mid)<=dist then
      begin
        kq:=mid;
        l:=mid+1;
      end
    else r:=mid-1;
  until l>r;
  exit(kq);
end;
procedure solve;
var
  x,i:longint;
begin
  x:=find;
  dist-=sqr(x); kq:=x<<1-1;
  i:=x;
  while dist>0 do
    begin
      if dist>=i then begin dist-=i; kq+=1; end
      else dec(i);
    end;
end;
begin
  openF;
  read(f1,test);
  for test:=1 to test do
    begin
      read(f1,x,y);
      if x=y then
        begin
          writeln(f2,0);
          continue;
        end;
      dist:=abs(x-y);
      solve;
      writeln(f2,kq);
    end;
  closeF;
end.

Download