Module b

Module b 

Expand description

ยงABC 420 B - Most Minority

refs: https://atcoder.jp/contests/abc420/tasks/abc420_b

use proconio::{input, marker::Chars};

fn main() {
    input! {
        n: usize, m: usize,
        s: [Chars; n],
    }

    let mut winners = vec![];

    for mi in 0..m {
        let votes = s.iter().map(|v| v[mi]).collect::<Vec<char>>();
        let zeros = votes.iter().filter(|v| **v == '0').count();
        let ones = votes.iter().filter(|v| **v == '1').count();

        let win = match (zeros, ones) {
            (0, _) => '1',
            (_, 0) => '0',
            (x, y) => {
                if x < y {
                    '0'
                } else {
                    '1'
                }
            }
        };

        winners.push(win);
    }

    let mut scores = vec![0; n];

    for ni in 0..n {
        for mi in 0..m {
            if s[ni][mi] == winners[mi] {
                scores[ni] += 1;
            }
        }
    }

    let max_score = scores.iter().max().expect("Not empty");
    let ans = scores
        .iter()
        .enumerate()
        .filter_map(|(idx, s)| {
            if s == max_score {
                Some((idx + 1).to_string())
            } else {
                None
            }
        })
        .collect::<Vec<String>>();

    println!("{}", ans.join(" "))
}