P1158,WA on Test 9.
#include <bits/stdc++.h>
using namespace std;
int x0, y3, x2, y2, n, x[(int)1e5], y[(int)1e5], ans = INT_MAX;
struct Info {
int dis1, dis2, id;
bool operator < (Info a) {
return dis1 < a.dis1;
}
} dd[(int)1e5];
int main() {
cin >> x0 >> y3 >> x2 >> y2 >> n;
for(int i = 0; i < n; i++) {
cin >> x[i] >> y[i];
dd[i].dis1 = pow(x[i] - x0, 2) + pow(y[i] - y3, 2);
dd[i].id = i;
}
sort(dd, dd + n);
for(int i = n - 1; i >= 0; i--) {
int temp = pow(x[dd[i].id] - x2, 2) + pow(y[dd[i].id] - y2, 2);
dd[i].dis2 = max(temp, dd[i + 1].dis2);
}
for(int i = 0; i < n; i++)
ans = min(ans, dd[i].dis1 + dd[i + 1].dis2);
cout << ans;
return 0;
}