Module b
Expand description
ยงABC 383 B - Humidifier 2
refs: https://atcoder.jp/contests/abc383/tasks/abc383_b
use proconio::{input, marker::Chars};
fn main() {
input! {
h: usize, w: usize, d: usize,
field: [Chars; h]
}
let mut ans = 0;
for x1 in 0..h {
for y1 in 0..w {
if field[x1][y1] == '#' {
continue;
}
for x2 in 0..h {
for y2 in 0..w {
if field[x2][y2] == '#' || (x1 == x2 && y1 == y2) {
continue;
}
ans = ans.max(calc(&field, (x1, y1), (x2, y2), d));
}
}
}
}
println!("{ans}");
}
fn calc(field: &[Vec<char>], p1: (usize, usize), p2: (usize, usize), d: usize) -> usize {
let mut count = 0;
let h = field.len();
let w = field[0].len();
for x in 0..h {
for y in 0..w {
if field[x][y] == '#' {
continue;
}
if distance(p1, (x, y)) <= d || distance(p2, (x, y)) <= d {
count += 1;
}
}
}
count
}
fn distance(p1: (usize, usize), p2: (usize, usize)) -> usize {
let dx = (p1.0 as isize - p2.0 as isize).unsigned_abs();
let dy = (p1.1 as isize - p2.1 as isize).unsigned_abs();
dx + dy
}