From 2b91f9554b326aea138bd8a0acbfaa10d9ad59aa Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Mon, 15 Feb 2021 21:05:21 +0700 Subject: [codechef] Try CP again after almost a year --- codechef/teamname.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 codechef/teamname.rs (limited to 'codechef/teamname.rs') diff --git a/codechef/teamname.rs b/codechef/teamname.rs new file mode 100644 index 0000000..23f23e3 --- /dev/null +++ b/codechef/teamname.rs @@ -0,0 +1,26 @@ +use std::collections::HashSet; +use std::io::BufRead; + +fn main() { + let stdin = std::io::stdin(); + let mut lines = stdin.lock().lines(); + for _t in 0..lines.next().unwrap().unwrap().trim().parse::().unwrap() { + let _n = lines.next().unwrap(); + let line = lines.next().unwrap().unwrap(); + let words: Vec<&str> = line.split(' ').collect(); + + let mut graph: [HashSet; 26] = Default::default(); + for word in &words { + let i = word.chars().next().unwrap() as usize; + graph[i - 97].insert(word[1..].to_string()); + } + + println!("{}", (0..26).fold(0, |r, i| r + (0..26).fold(0, |s, j| { + if i == j { s } else { + let intersect = graph[i].iter() + .fold(0, |c, d| c + graph[j].contains(d) as usize); + s + (graph[i].len() - intersect) * (graph[j].len() - intersect) + } + }))) + } +} -- cgit 1.4.1