题意:平面给你n个点,问能够组成多少个平行四边形
思路:能组成平行四边形的两条对边的向量一定是相等的,直接n^2把所有向量算出来就做完了
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn = 2005;
map<pair<int,int>,int> ve;
pair<int,int>a[maxn];
int main()
{
int n;
scanf("%d",&n);
for (int i = 1;i<=n;i++)
scanf("%d%d",&a[i].first,&a[i].second);
int ans = 0;
for (int i = 1;i<=n;i++)
for (int j = i+1;j<=n;j++)
{
pair<int,int>temp;
temp.first = a[i].first-a[j].first;
temp.second = a[i].second-a[j].second;
if (temp.first<0)
temp.first=-temp.first,temp.second=-temp.second;
else if (temp.second<0 && temp.first==0)
temp.second=-temp.second;
ans+=ve[temp];
ve[temp]++;
}
printf("%d\n",ans/2);
}
Description
You are given n
Input
The first line of the input contains integer n (1 ≤ n ≤ 2000) — the number of points.
Each of the next n lines contains two integers (xi, yi) (0 ≤ xi, yi ≤ 109) — the coordinates of the i-th point.
Output
Print the only integer c
Sample Input
Input
4 0 1 1 0 1 1 2 0
Output
1