#include using namespace std; #define ll long long #define rep(i, n) for (int i = 0; i < (n); i++) #define P pair int main() { int N; cin >> N; vector x(N), y(N); rep(i, N) cin >> x[i] >> y[i]; priority_queue, vector>, greater>> que; rep(i, N) { for (int j = i+1; j < N; j++) { ll d = (x[i]-x[j]) * (x[i]-x[j]) + (y[i]-y[j]) * (y[i]-y[j]); que.push({d, {i,j}}); } } vector excluded(N, false); // i 番目の風船を除いたか int ans = 0; while(que.size()) { pair p = que.top(); // 次に破裂する組み合わせ int b1 = p.second.first, b2 = p.second.second; // もう風船が既になければ無視してよい(b1 == 0 も含む) if (excluded[b1] || excluded[b2]) { que.pop(); continue; } // 風船1(0)でなければ勝手に取り除かれるので,最初に取り除かなくて良い if (b1 != 0 && b2 != 0) { que.pop(); excluded[b1] = true, excluded[b2] = true; continue; } // 風船1 風船が消えていなかったら事前に取り除く必要あり if (b1 == 0 && !excluded[b2]) { ans++; que.pop(); excluded[b2] = true; continue; } } cout << ans << endl; }