fn calc(x: i32, y: i32, mv: i32) -> i32 { let _f = { |n: i32| if n == 0 { 0 } else { n / n.abs() } }; let move_turn = match (_f(x), _f(y)) { (_, -1) => 2, (0, _) => 0, (_, _) => 1, }; let (_x, _y, mv) = (x.abs() as f64, y.abs() as f64, mv as f64); ((_x / mv).ceil() + (_y / mv).ceil() + (move_turn as f64)) as i32 } fn _read() -> (i32, i32, i32) { fn _read_to() -> T { let mut _s = String::new(); std::io::stdin().read_line(&mut _s).ok(); _s.trim().parse().ok().unwrap() } (_read_to(), _read_to(), _read_to()) } fn main() { let (x, y, mv) = _read(); println!("{}", calc(x, y, mv)); }