#include #include class Ichien { int x; int y; public: Ichien(int x, int y) : x(x), y(y) {}; bool kasanaru(Ichien *other) { int x_diff = this->x - other->x; int y_diff = this->y - other->y; return x_diff * x_diff + y_diff * y_diff < 400; } }; int main() { int n; int x, y; Ichien *ichi; std::list list[21][21]; std::cin >> n; for (int i = 0; i < n; ++i) { std::cin >> x >> y; ichi = new Ichien(x, y); bool okeru = true; if (x % 100 < 10 || x % 100 > 90 || y % 100 < 10 || y % 100 > 90) { // 線上にあるやつを細かくするの面倒なった、 // これでもとおるんじゃね? for (auto &l: list) { for (auto &m: l) { for (auto other: m) { if (ichi->kasanaru(other)) { okeru = false; break; } } } } } else { for (auto other: list[x/100][y/100]) { if (ichi->kasanaru(other)) { okeru = false; break; } } } if (okeru) { list[x/100][y/100].push_back(ichi); } else { delete ichi; } } int sum = 0; for (auto &l: list) { for (auto &m: l) { sum += m.size(); } } std::cout << sum << std::endl; return 0; }