平行四边形对角线两点连线的中点相同,利用这个性质可以快速计算。
#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,int>mp;
int x[2048],y[2048];
int main()
{
int n,i,j;
long long ans;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&x[i],&y[i]);
mp.clear();
ans=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(mp[make_pair(x[i]+x[j],y[i]+y[j])])
ans+=mp[make_pair(x[i]+x[j],y[i]+y[j])];
mp[make_pair(x[i]+x[j],y[i]+y[j])]++;
}
printf("%lld\n",ans);
return 0;
}