暴力枚举 35ms
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int n;
int r1x, r1y, r2x, r2y;
const int N = 2010;
double d1[N], d2[N];
double d(double x1, double y1, double x2, double y2){
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
double ans = 1e18;
void dfs(int i, double r1, double r2){
if(r1 * r1 + r2 * r2 >= ans) return;
if(i > n){
ans = r1 * r1 + r2 * r2;
}
if(d1[i] <= r1 || d2[i] <= r2) dfs(i + 1, r1, r2);
else{
dfs(i + 1, d1[i], r2);
dfs(i + 1, r1, d2[i]);
}
}
int main(){
cin >> n;
cin >> r1x >> r1y >> r2x >> r2y;
for(int i = 1; i <= n; i++)
{
int x, y;
cin >> x >> y;
d1[i] = d(r1x, r1y, x, y);
d2[i] = d(r2x, r2y, x, y);
}
dfs(1, 0, 0);
cout << (long long)(ans + 0.5);
return 0;
}