use itertools::Itertools; use proconio::{input, marker::Chars}; fn solve() -> Vec { input! { n: usize, m: usize, s: [Chars; n], } let mut t = vec![vec!['.'; n]; m]; for i in 0..n { for j in 0..m { t[j][i] = s[i][j]; } } let c = t.iter().map(|l| l.iter().filter(|&&ch| ch == '#').count()).collect_vec(); let mut u = vec![vec!['.'; m]; n]; for j in 0..m { for i in 0..c[j] { u[i][j] = '#'; } } let d = u.iter().map(|l| l.iter().filter(|&&ch| ch == '#').count()).collect_vec(); d.iter().map(|&di| format!("{}{}", "#".repeat(di), ".".repeat(m - di))).collect_vec() } fn main() { let ans = solve(); for l in ans.iter() { println!("{}", l); } }