讨论 / 为什么一直是编译错误?哪位好心人能发个题解?
rqnoj外用 2016-05-08 01:08:00
点我顶贴 收藏 删除
var

i,j,k:longint;

x1,y1,x2,y2,n:longint;

a,b:array[0..100001] of longint;

f:array[0..100001] of longint;

tx,ty:longint;

ans:longint;

function max(a,b:longint):longint;

begin

if a>b then exit(a);

exit(b);

end;

procedure swap(var x,y:longint);

var t:longint;

begin

t:=x;x:=y;y:=t;

end;

procedure qsort(l,r:longint);

var

i,j,m1,m2:longint;

begin

i:=l;

j:=r;

m1:=a[(l+r)div 2];

m2:=b[(l+r)div 2];

repeat

while ((a[i]<m1)or((a[i]=m1)and(b[i]<m2))) do inc(i);

while ((a[j]>m1)or((a[j]=m1)and(b[j]>m2))) do dec(j);

if i<=j then

begin

swap(a[i],a[j]);

swap(b[i],b[j]);

inc(i); dec(j);

end;

until i>j

if l<j then qsort(l,j);

if r>i then qsort(i,r);

end;

begin

fillchar(a,sizeof(a),0);

fillchar(b,sizeof(b),0);

fillchar(f,sizeof(f),0);

read(x1,y1,x2,y2);

read(n);

for i:=1 to n do

begin

read(tx,ty);

a[i]:=sqr(tx-x1)+sqr(ty-y1);

b[i]:=sqr(tx-x2)+sqr(ty-y2);

end;

qsort(1,n);

for i:=n downto 1 do

f[i]:=max(b[i],f[i+1]);

ans:=maxlongint;

for i:=1 to n+1 do

if ans>f[i]+a[i-1] then

ans:=f[i]+a[i-1];

writeln(ans);

end.

(对不起啊,没有空格,看起来可能有点不舒服)

#1 3185267288@2016-05-08 21:58:44
回复 删除
不 知 道
查看更多回复
提交回复