fork download
  1. use std::io;
  2. use std::collections::HashMap;
  3.  
  4. fn main() {
  5. let mut input = String::new();
  6. io::stdin().read_line(&mut input).unwrap();
  7. let n: usize = input.trim().parse().unwrap();
  8.  
  9. let mut a = Vec::new();
  10. let mut all = Vec::new();
  11.  
  12. for _ in 0..n {
  13. input.clear();
  14. io::stdin().read_line(&mut input).unwrap();
  15. let parts: Vec<i32> = input
  16. .split_whitespace()
  17. .map(|x| x.parse().unwrap())
  18. .collect();
  19.  
  20.  
  21. let tower: Vec<i32> = parts[1..].to_vec();
  22. a.push(tower.clone());
  23.  
  24. for &x in &tower {
  25. all.push(x);
  26. }
  27. }
  28.  
  29. all.sort();
  30. let mut pos = HashMap::new();
  31. for (i, &x) in all.iter().enumerate() {
  32. pos.insert(x, i);
  33. }
  34.  
  35. let mut good = 0;
  36. let mut total = 0;
  37.  
  38. for tower in &a {
  39. total += tower.len();
  40.  
  41. for i in 0..tower.len() - 1 {
  42. let p1 = pos[&tower[i]];
  43. let p2 = pos[&tower[i + 1]];
  44.  
  45. if p2 == p1 + 1 {
  46. good += 1;
  47. }
  48. }
  49. }
  50.  
  51. let s = total - good - n;
  52. let c = n + s - 1;
  53.  
  54. println!("{} {}", s, c);
  55. }
Success #stdin #stdout 0s 5320KB
stdin
2
3 3 5 8
2 9 2
stdout
1 2