Why my program got WA?Here's it.
const maxn=100;
jin=1e-15;
var d:array [1..maxn] of extended;
id:array [1..maxn] of byte;
square:array [1..maxn] of
record xmin,ymin,xmax,ymax:integer;end;
n,i,k:byte;
px,py:integer;
procedure swap(var a,b:integer);
var t:integer;
begin
t:=a;a:=b;b:=t;
end;
procedure swapb(var a,b:byte);
var t:byte;
begin
t:=a;a:=b;b:=t;
end;
procedure swapd(var a,b:extended);
var t:extended;
begin
t:=a;a:=b;b:=t;
end;
function dis(x,y:integer):extended;
begin
dis:=sqrt(sqr(px-x)+sqr(py-y));
end;
function min(a,b:integer):integer;
begin
if a<b then min:=a else min:=b;
end;
function max(a,b:integer):integer;
begin
if a>b then max:=a else max:=b;
end;
begin
readln(n);
for i:=1 to n do
begin
readln(square[i].xmin,square[i].ymin,square
[i].xmax,square[i].ymax);
px:=max(abs(square[i].xmin-square[i].xmax),abs(square
[i].ymin-square[i].ymax));
square[i].xmin:=min(square[i].xmin,square[i].xmax);
square[i].ymin:=min(square[i].ymin,square[i].ymax);
square[i].xmax:=square[i].xmin+px;
square[i].ymax:=square[i].ymin+px;
end;
readln(px,py);
for i:=1 to n do
if px<square[i].xmin then
if py<square[i].ymin then d[i]:=dis(square[i].xmin,square
[i].ymin)
else
if py<=square[i].ymax then d[i]:=square[i].xmin-px
else d[i]:=dis(square[i].xmin,square[i].ymax)
else
if px<=square[i].xmax then
if py<square[i].ymin then d[i]:=square[i].ymin-py
else
if py<=square[i].ymax then d[i]:=0
else d[i]:=py-square[i].ymax
else
if py<square[i].ymin then d[i]:=dis(square[i].xmax,square
[i].ymin)
else
if py<=square[i].ymax then d[i]:=px-square[i].xmax
else d[i]:=dis(square[i].xmax,square[i].ymax);
for i:=1 to n do id[i]:=i;
for i:=1 to n-1 do
for k:=i+1 to n do
if d[i]>d[k]+jin then
begin
swapd(d[i],d[k]);
swapb(id[i],id[k]);
end;
for i:=1 to n-1 do
write(id[i],' ');
writeln(id[n]);
end.