use std::collections::HashMap; fn main() { let mut nm = String::new(); std::io::stdin().read_line(&mut nm).ok(); let nm: Vec = nm.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nm[0]; let m = nm[1]; let r = (0..n).map(|_| { let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); let temp: Vec = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); temp }) .collect::>(); let mut maxvals = r[0].clone().to_owned(); let mut players = vec![vec![0]; m]; let mut cntmap = HashMap::new(); cntmap.insert(0usize, m); println!("1"); for i in 1..n { for j in 0..m { if maxvals[j] < r[i][j] { for &v in players[j].iter() { *cntmap.entry(v).or_insert(0usize) -= 1; if *cntmap.get(&v).unwrap() == 0 { cntmap.remove(&v); } } players[j] = vec![i]; maxvals[j] = r[i][j]; *cntmap.entry(i).or_insert(0usize) += 1; } else if maxvals[j] == r[i][j] { players[j].push(i); *cntmap.entry(i).or_insert(0usize) += 1; } } println!("{}", cntmap.len()); } }