use proconio::input; fn main() { // 入力 input!{ n: usize, k: u64, h: [u32; n], xy: [(u64, u64); n], } // ユークリッド距離の2乗を求める関数 let dist2 = |(x1, y1): (u64, u64), (x2, y2): (u64, u64)| x1.abs_diff(x2).pow(2) + y1.abs_diff(y2).pow(2); // 消滅されない神社の数 let ans = (0..n).filter(|&i| { // h_i < h_j かつユークリッド距離がk以下であるものが存在するなら消滅できる // ので // 条件を反転させる !(0..n).any(|j| i != j && h[i] < h[j] && dist2(xy[i], xy[j]) <= k.pow(2)) }).count(); // 出力 println!("{}", ans) }