NKSTEP - Chuyển
Tác giả: ladpro98
Ngôn ngữ: Pascal
program nkstep;
uses math;
const maxsqrt=46340;
fi='';
var A:ARRAY[1..maxsqrt] of longint;
inp:text;
n,x,y,res:longint;
procedure init;
var i:longint;
begin
for i:=1 to maxsqrt do
a[i]:=sqr(i);
end;
function find(key:longint):longint;
var l,r,m,k:longint;
begin
l:=1;
r:=maxsqrt;
while l<=r do
begin
m:=(l+r) shr 1;
if a[m]<=key then
begin
k:=m;
l:=m+1;
end
else r:=m-1;
end;
exit(k);
end;
procedure open;
begin
assign(inp,fi);
reset(inp);
end;
procedure process;
var t,p,pos:longint;
begin
readln(inp,t);
for p:=1 to t do
begin
readln(inp,x,y);
n:=abs(x-y);
pos:=find(n);
res:=(pos shl 1-1)+((n-a[pos]) div pos);
if (n-a[pos]) mod pos>0 then inc(res);
writeln(res);
end;
close(inp);
end;
begin
open;
init;
process;
end.