package main import ( "fmt" "bufio" "os" "sort" ) func main() { r := bufio.NewReader(os.Stdin) w := bufio.NewWriter(os.Stdout) defer w.Flush() var n int fmt.Fscan(r, &n) xy := make([][2]int, n) for i := 0; i < n; i++ { var x, y int fmt.Fscan(r, &x, &y) xy[i] = [2]int{x, y} } dist := make([][3]int, n * (n-1) / 2) k := 0 for i := 0; i < n; i++ { xi, yi := xy[i][0], xy[i][1] for j := i+1; j < n; j++ { xj, yj := xy[j][0], xy[j][1] d := (xi - xj) * (xi - xj) + (yi - yj) * (yi - yj) dist[k] = [3]int{d, i, j} k++ } } sort.Slice(dist, func(i, j int) bool {return dist[i][0] < dist[j][0]}) dead := make([]bool, n) alive_n := n remove := 0 for _, x := range dist { i, j := x[1], x[2] if i == 0 && !dead[j] { remove++ dead[j] = true alive_n-- } else if !dead[i] && !dead[j] { dead[i] = true dead[j] = true } if alive_n == 1 { break } } fmt.Fprintln(w, remove) }