var i,j,k,l,m,n,x1,y1,x2,y2,x0,y0,max,min,maxb,min1,min2:longint; x,y,a,b:array[0..100001]of longint; procedure qs(l,r:longint); var i,j,x,y: longint; begin i:=l; j:=r; x:=a[(l+r) div 2]; repeat while a[i]>x do inc(i); while x>a[j] do dec(j); if not(i>j) then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; y:=b[i]; b[i]:=b[j]; b[j]:=y; inc(i); j:=j-1; end; until i>j; if l<j then qs(l,j); if i<r then qs(i,r); end; begin //assign(input,'missile.in'); reset(input); //assign(output,'missile.out'); rewrite(output); fillchar(a,sizeof(a),0); fillchar(b,sizeof(b),0); read(x1,y1,x2,y2); read(n); for i:=1 to n do begin read(x0,y0); a[i]:=sqr(x0-x1)+sqr(y0-y1); b[i]:=sqr(x0-x2)+sqr(y0-y2); end; qs(1,n); maxb:=0; min:=a[1]; for i:=2 to n+1 do begin if b[i-1]>maxb then maxb:=b[i-1]; if a[i]+maxb<min then min:=a[i]+maxb; end; writeln(min); close(input); close(output); end. /************************************************************** Problem: 2294 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/