B - 吊兰 CodeForces - 660D

#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <queue>
#include <set>
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
typedef pair<int ,int >pii;
pii p[20009],ans[20009];
map<pii,int>a;
#define x first
#define y second
bool cmp(pii a,pii b)
{if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
int main()
{int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>p[i].x>>p[i].y;
sort(p,p+n,cmp);
int time=0;
for(int i=0;i<=n;i++)
    for(int j=i+1;j<n;j++)
{
    ans[i]=pair<int ,int >(p[i].x-p[j].x,p[i].y-p[j].y);
    time+=a[ans[i]];
    a[ans[i]]++;//三条平行的向量可以组成三个,四条为六个,五条为十个。Cn(2)
}
cout<<time/2<<endl;//是因为平行四边形有两对平行的边,我们都算了
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhangzhenjunaixuxin/article/details/80185988
今日推荐