#include <iostream>
#include <cmath>
#define sq(x) ((x) * (x))
#define pi 3.1415926535/*acos(-1)*/
#define int long long
using namespace std;
int n, XX[10], YY[10], A[10], vis[20];
double S, j = -1.0, r[10], x, y, _x, _y;
double distance(int x, int y, int X, int Y) {
return sqrt(sq(x - X) + sq(y - Y));
}
double calr(int k) {
double r1 = min(distance(XX[k], YY[k], x, YY[k]), distance(XX[k], YY[k], _x, YY[k]));
double r2 = min(distance(XX[k], YY[k], XX[k], _y), distance(XX[k], YY[k], XX[k], y));
double rdis = min(r1, r2);
for (int i = 1; i < k; i++) {
if (vis[i]) {
rdis = min(rdis, max(distance(XX[i], YY[i], XX[k], YY[k]) - r[i], 0.0));
}
}
return rdis;
}
void dfs(int k, double mj) {
if (k > n) {
j = max(mj, j);
return;
}
for (int i = 1; i <= n; i++) {
if (!vis[i]) {
vis[i] = 1;
r[k] = calr(k);
dfs(k + 1, mj + sq(r[k]) * pi);
vis[i] = 0;
}
}
}
signed main() {
cin >> n;
cin >> x >> y >> _x >> _y;
S = abs(x - _x) * abs(y - _y);
for (int i = 1; i <= n; i++) {
cin >> XX[i] >> YY[i];
}
dfs(1, 0);
cout << (int)(S - j + 0.5);
}
你说的对,但是样例能过,却只能得40分。