Pagini recente » Cod sursa (job #2373505) | Cod sursa (job #3140519) | Cod sursa (job #435905) | Cod sursa (job #586258) | Cod sursa (job #2876436)
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
using namespace std;
ifstream fin ("trapez.in");
ofstream fout ("trapez.out");
const int MAX_N = 1005;
int n, len, sol;
struct point{
int x, y;
} pct[MAX_N];
static inline bool cmpX(const point& p1, const point& p2){
return p1.x < p2.x;
}
static inline bool cmpY(const point& p1, const point& p2){
return p1.y < p2.y;
}
int mx, my;
int dx[MAX_N], dy[MAX_N];
int main (){
ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin>>n;
for(int i=1; i<=n; i++)
fin>>pct[i].x>>pct[i].y;
sort(pct+1, pct+n+1, cmpX);
for(int i=1; i < n; i++)
for(int j=i+1; j<=n; j++)
dx[++mx] = pct[j].x - pct[i].x;
sort(dx+1, dx+mx+1);
len = 1;
for(int i=2; i<=mx; i++){
if(dx[i] == dx[i-1])
len++;
else{
sol += len * (len-1) / 2;
len = 1;
}
}
sol += len * (len-1) / 2;
sort(pct+1, pct+n+1, cmpY);
for(int i=1; i < n; i++)
for(int j=i+1; j<=n; j++)
dy[++my] = pct[j].y - pct[i].y;
sort(dy+1, dy+my+1);
len = 1;
for(int i=2; i<=my; i++){
if(dy[i] == dy[i-1])
len++;
else{
sol += len * (len-1) / 2;
len = 1;
}
}
sol += len * (len-1) / 2;
fout<<sol;
return 0;
}