#include <iostream> #include <algorithm> #include <cmath> using namespace std; const int N(100009); struct missle{ int dis;int no; }; missle Sys1[N]; int Sys2[N]={0}; int cal(int x1,int y1,int x2,int y2) { return pow((double)(x1-x2),2.0)+pow((double)(y1-y2),2.0); } bool comp(const missle &x,const missle &y) { return x.dis>y.dis; } int main() { int x1,y1,x2,y2,n,t1(0),t2(0),ans(0); cin>>x1>>y1>>x2>>y2>>n; int x,y; for(int i=1;i<=n;i++) { scanf("%d%d",&x,&y); Sys1[i].no=i; Sys1[i].dis=cal(x1,y1,x,y); Sys2[i]=cal(x2,y2,x,y); } sort(Sys1+1,Sys1+n+1,comp); t1=Sys1[1].dis; t2=0; int tmax(0); ans=t1+t2; for(int i=1;i<=n;i++) { ans=min(ans,t1+t2); t2=max(t2,Sys2[Sys1[i].no]); t1=Sys1[i+1].dis; } cout<<ans<<endl; return 0; } /************************************************************** Problem: 2294 User: admin Language: C++ Result: Accepted Time:156 ms Memory:3248 kb ****************************************************************/