struct Solution; impl Solution { pub fn max_subarrays(n: i32, mut conflicting_pairs: Vec>) -> i64 { let mut arr: Vec> = vec![vec![]; (n + 1) as usize]; for pair in conflicting_pairs.iter_mut() { if pair[0] > pair[1] { pair.swap(0, 1); } arr[pair[0] as usize].push(pair[1]); } let mut ans: i64 = 0; let mut extra: Vec = vec![0; (n + 2) as usize]; let mut b: Vec = vec![(n + 1) as i64; (n + 1) as usize]; for i in (1..=n as usize).rev() { b.extend(arr[i].iter().map(|&x| x as i64)); b.sort_unstable(); b.truncate(2); ans += (b[0] as i64) - (i as i64); extra[b[0] as usize] += b[1] - b[0]; } ans + *extra.iter().max().unwrap() as i64 } } fn main() { let sl = Solution::max_subarrays(5, vec![vec![1, 2], vec![2, 5], vec![3, 5]]); println!("{}", sl); }