本来以为是道水题的结果改了好久都没过www
思路自认为挺清晰的呀,求助一下(WA了5个点)
#include <cstdio>
using namespace std;
int n;
int x[505],y[505];
bool mp[500][500];
int ab(int a){return a<0?-a:a;}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&x[i],&y[i]);
x[i]+=100,y[i]+=100;//偏移
mp[x[i]][y[i]]=true;
}
int s1=0,s2=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j) continue;
if(x[i]<x[j]&&y[i]<y[j]){
int qq=ab(x[i]-x[j]);
int ww=ab(y[i]-y[j]);
int sx=x[i]-ww,sy=y[i]-qq;
int xx=sx+qq,yy=sy+ww;
if(sx<0||sy<0||xx<0||yy<0) continue;//判断倾斜的正方形
if(mp[sx][sy]&&mp[xx][yy]) s1++;
}
if(x[i]==x[j]){
int qq=ab(y[i]-y[j]);
int sx=x[i]+qq,sy=y[i];
int xx=sx,yy=y[j];
if(sx<0||sy<0||xx<0||yy<0) continue;//判断正的正方形
if(mp[sx][sy]&&mp[xx][yy]) s2++;
}
}
}
printf("%d",s1+s2/2);
return 0;
}