Skip to content

Instantly share code, notes, and snippets.

@snowmerak
Created March 29, 2021 10:08
Show Gist options
  • Save snowmerak/d48b719d56b1a6d8226b295cbc7c1752 to your computer and use it in GitHub Desktop.
Save snowmerak/d48b719d56b1a6d8226b295cbc7c1752 to your computer and use it in GitHub Desktop.
fn main() {
let mut n = String::new();
std::io::stdin().read_line(&mut n).expect("not readable");
let n = n.trim().split(" ").collect::<Vec<&str>>();
let (n, m) = (n.get(0).unwrap().parse::<usize>().unwrap(), n.get(1).unwrap().parse::<usize>().unwrap());
let mut map = vec![];
for i in 0..n {
let mut str = String::new();
std::io::stdin().read_line(&mut str).expect("not readable board");
let mut l = vec![];
let mut b = if i % 2 == 0 {
true
} else {
false
};
for s in str.trim().split("") {
if s.is_empty() {
continue;
}
l.push(!(b ^ s.eq("W")));
b = !b;
}
l.resize(m, false);
map.push(l);
}
let mut comp = vec![];
for i in 0..n {
let l = map.get(i).unwrap();
let mut t = vec![];
for j in 0..=(m-8) {
let mut v = (0, 0);
for k in j..(j+8) {
match l.get(k).unwrap() {
true => {v.0 += 1}
false => {v.1 += 1}
}
}
t.push(v);
}
comp.push(t);
}
let mut result = vec![];
for j in 0..=(m-8) {
let mut t = vec![];
for i in 0..=(n-8) {
let mut v = (0, 0);
for k in i..(i+8) {
let a = comp.get(k).unwrap().get(j).unwrap();
v.0 += a.0;
v.1 += a.1;
}
t.push(v);
}
result.push(t)
}
let mut least = i32::MAX;
for x in &result {
for v in x {
if v.0 < least {
least = v.0;
}
if v.1 < least {
least = v.1;
}
}
}
println!("{}", least);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment