求大佬帮忙改一下
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
struct you{
int x,y;
}d[7];
int n;
double ans;
bool used[7];
int Map[2001][2001];
int lx,ly,rx,ry;
double dis(int fx,int fy,int ex,int ey){
return sqrt((fx-ex)*(fx-ex)+(fy-ey)*(fy-ey));
}
double max_cir(int now){
int nx=d[now].x;
int ny=d[now].y;
double min_r=20000;
for(int i=1;i<=n;i++){
if(i==now||Map[d[i].x][d[i].y]==0) continue;
if(dis(nx,ny,d[i].x,d[i].y)-Map[d[i].x][d[i].y]<=0) return 0;
if(dis(nx,ny,d[i].x,d[i].y)-Map[d[i].x][d[i].y]<min_r&&dis(nx,ny,d[i].x,d[i].y)-Map[d[i].x][d[i].y]>0) min_r=dis(nx,ny,d[i].x,d[i].y)-Map[d[i].x][d[i].y];
}
min_r=min(min_r,min(min(min(double(d[now].x-lx),double(rx-d[now].x)),double(d[now].y-ly)),double(ry-d[now].y)));
return min_r;
}
double S(double r){
return M_PI*r*r;
}
void dfs(int now,double all){
if(now==n+1){
ans=max(ans,all);
}
for(int i=now;i<=n;i=-~i){
if(used[i]) continue;
double cir_r=max_cir(now);
all+=S(cir_r);
Map[d[now].x][d[now].y]=cir_r;
dfs(now+1,all);
all-=S(cir_r);
Map[d[now].x][d[now].y]=0;
}
}
int main(){
memset(Map,0,sizeof(Map));
cin>>n;
cin>>lx>>ly>>rx>>ry;
lx+=1000,ly+=1000,rx+=1000,ry+=1000;
for(int i=1;i<=n;i=-~i){
cin>>d[i].x>>d[i].y;
d[i].x+-1000,d[i].y+=1000;
}
memset(used,false,sizeof(used));
ans=0xc0c0c0c0;
dfs(1,0);
printf("%.2lf",ans);
return 0;
}