codeforce 660D Number of Parallelograms

题意:询问多少个矩形。

统计横纵坐标差,放进vector中

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<queue>
 5 #include<stack>
 6 #include<bits/stdc++.h>
 7 using namespace std;
 8 #define LL long long
 9 int x[2010],y[2010];
10 vector<pair<int,int> >v;
11 int main(){
12     int n;
13     while(~scanf("%d",&n)){
14        for(int i=0;i<n;i++)
15         scanf("%d%d",&x[i],&y[i]);
16     
17        for(int i=0;i<n;i++){
18         for(int j=i+1;j<n;j++){
19             //cout<<"~~"<<endl;
20             int dx=x[i]-x[j];
21             int dy=y[i]-y[j];
22             if(dx<0||(dx==0&&dy<0)){
23                 dx=-dx,dy=-dy;
24             }
25             v.push_back(make_pair(dx,dy));
26         }
27        }
28        //cout<<"~~"<<endl;
29        sort(v.begin(),v.end());
30        //printf("size:%d\n",v.size());
31        LL cnt=0;
32        LL ans=0;
33        for(int i=0;i<(int)v.size()-1;i++){
34            cnt++;
35            if(v[i+1]!=v[i]){
36              ans+=cnt*(cnt-1)/2;
37              cnt=0;
38            }
39         }
40         printf("%I64d\n", ans/2);
41     }
42     return 0;
43 }
View Code

 

posted @ 2016-04-11 14:56  yyblues  阅读(202)  评论(0编辑  收藏  举报