#include #include #include #include #include #include using namespace std; unordered_map > line; unordered_map > col; set > v; int rasp; void citire() { int n; cin >> n; int x, y; for(int i = 1; i <= n; ++i) { cin >> x >> y; line[x].push_back(y); col[y].push_back(x); v.insert(make_pair(x, y)); } } 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(v.find(make_pair(p.first + difY, p.second)) != v.end()) rasp++; if(v.find(make_pair(p.first - difY, p.second)) != v.end()) rasp++; } } else { for(auto x:col[p.second]) if(x != p.first) { difX = abs(p.first - x); if(v.find(make_pair(p.first, p.second + difX)) != v.end()) rasp++; if(v.find(make_pair(p.first, p.second - difX)) != v.end()) rasp++; } } } cout << rasp; } int main() { citire(); rezolvare(); return 0; }