#include #include #include using namespace std; #define MaxN 100100 int N; pair points[MaxN]; unordered_set pointSet; void insertPoint(pair p) { long long val = *((long long *)&p); pointSet.insert(val); } bool exista(pair p) { long long val = *((long long *)&p); return pointSet.find(val) != pointSet.end(); } int main() { scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d %d", &points[i].first, &points[i].second); insertPoint(points[i]); } sort(points, points + N); int sol = 0; for (int st = 0, fn = 0; st < N; st = fn) { fn = st; while (fn < N && points[fn].first == points[st].first) { fn++; } for (int i = st; i < fn; i++) { for (int j = i + 1; j < fn; j++) { int delta = points[j].second - points[i].second; sol += exista(make_pair(points[i].first - delta, points[i].second)); sol += exista(make_pair(points[i].first + delta, points[i].second)); sol += exista(make_pair(points[j].first - delta, points[j].second)); sol += exista(make_pair(points[j].first + delta, points[j].second)); } } } printf("%d\n", sol); }