#include #include #include #include #include #include #include using namespace std; unordered_map > line; unordered_map > col; vector > v; unordered_set s; int rasp; void citire() { int n; cin >> n; unsigned long long x, y; for(int i = 1; i <= n; ++i) { cin >> x >> y; line[x].push_back(y); col[y].push_back(x); v.push_back(make_pair(x, y)); s.insert(x * 1e10 + y); } } inline bool exists(unsigned long long x, unsigned long long y) { return (s.find(x * 1e10 + y) != s.end()); } void rezolvare() { int difX, difY; for(auto &p:v) { if(line[p.first].size() < col[p.second].size()) { for(auto y:line[p.first]) if(y != p.second) { difY = abs(p.second - y); if(exists(p.first + difY, p.second)) rasp++; if(p.first >= difY && exists(p.first - difY, p.second)) rasp++; } } else { for(auto x:col[p.second]) if(x != p.first) { difX = abs(p.first - x); if(exists(p.first, p.second + difX)) rasp++; if(p.second >= difX && exists(p.first, p.second - difX)) rasp++; } } } cout << rasp; } int main() { citire(); rezolvare(); return 0; }