use std::collections::HashMap; use proconio::input; fn main() { input! { n: usize, d: i64, a: [i64; n], } let mut mp = HashMap::new(); let mut ans = 0usize; for aa in a { // aaに対して、-Dの個数 * -2Dの個数 let mut cnt1 = 0; if mp.contains_key(&(aa - d)) { cnt1 = *mp.get(&(aa - d)).unwrap(); } let mut cnt2 = 0; if mp.contains_key(&(aa - 2*d)) { cnt2 = *mp.get(&(aa - 2*d)).unwrap(); } ans += cnt1 * cnt2; *mp.entry(aa).or_insert(0) += 1; } println!("{}", ans); }