Pagini recente » Cod sursa (job #247878) | Cod sursa (job #2929594) | Cod sursa (job #1396478) | Cod sursa (job #2577136) | Cod sursa (job #728157)
Cod sursa(job #728157)
const max=10000000000000;
type vec=record
x,y:int64;
end;
type vector=array[1..100000]of vec;
var min:real;
i:longint;
n:int64;
v2,v:vector;
function dist(a,b:vec):real;
var a1,a2:int64;
begin
a1:=abs(a.x-b.x);
a2:=abs(a.y-b.y);
dist:=sqrt(sqr(a1)+sqr(a2));
end;
procedure qsort2(var a:vector);
procedure sort2(l,r: int64);
var
i,j:int64;
x,y:vec;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
while (a[i].y<x.y)or((a[i].y=x.y)and(a[i].x<x.x)) do inc(i);
while (x.y<a[j].y)or((a[j].y=x.y)and(x.x<a[j].x)) do dec(j);
if not(i>j) then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i);
j:=j-1;
end;
until i>j;
if l<j then
sort2(l,j);
if i<r then
sort2(i,r);
end;
begin
sort2(1,n);
end;
procedure qsort(var a:vector);
procedure sort(l,r: longint);
var
i,j:longint;
x,y:vec;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
while (a[i].x<x.x)or((a[i].x=x.x)and(a[i].y<x.y)) do inc(i);
while (x.x<a[j].x)or((a[j].x=x.x)and(x.y<a[j].y)) do dec(j);
if not(i>j) then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i);
j:=j-1;
end;
until i>j;
if l<j then
sort(l,j);
if i<r then
sort(i,r);
end;
begin
sort(1,n );
end;
begin
assign(input,'cmap.in');reset(input);
assign(output,'cmap.out');rewrite(output);
readln(n);
min:=max;
for i:=1 to n do
readln(v[i].x,v[i].y);
v2:=v;
qsort(v);
for i:=1 to n-1 do
if dist(v[i],v[i+1])-min<0.000000 then min:=dist(v[i],v[i+1]);
qsort2(v2);
for i:=1 to n-1 do
if dist(v2[i],v2[i+1])-min<0.000000 then min:=dist(v2[i],v2[i+1]);
writeln(min:0:6);
end.