导弹拦截1158导弹拦截
#include<bits/stdc++.h>
using namespace std;
struct as{
int d1,d2;
bool operator < (const as &A){
return d1 < A.d1;
}
}a[100001];
int n,X1,X2,Y1,Y2,f[100001];
int main(){
scanf("%d%d%d%d",&X1,&Y1,&X2,&Y2);
scanf("%d",&n);
for(int i=1;i<=n;i++){
int x,y;
scanf("%d%d",&x,&y);
a[i].d1=(x-X1)*(x-X1)+(y-Y1)*(y-Y1);
a[i].d2=(x-X2)*(x-X2)+(y-Y2)*(y-Y2);
}
sort(a+1, a+n+1);
f[n+1]=0;
for(int i=n;i;i--){
f[i]=max(f[i+1],a[i].d2);
}
int ans=1<<30;
for(int i=1;i<=n;i++){
ans=min(ans,a[i].d1+f[i+1]);
}
cout<<ans<<endl;
}