From 911aa923cb8b1820f5b604d34f9a1ef4cc612f30 Mon Sep 17 00:00:00 2001 From: li-chx Date: Sat, 26 Jul 2025 23:49:26 +0800 Subject: [PATCH] =?UTF-8?q?3480.=20=E5=88=A0=E9=99=A4=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=86=B2=E7=AA=81=E5=AF=B9=E5=90=8E=E6=9C=80=E5=A4=A7=E5=AD=90?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E6=95=B0=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/main.rs b/src/main.rs index 905189c..8cd4572 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,25 +1,30 @@ struct Solution; impl Solution { - pub fn max_sum(mut nums: Vec) -> i32 { - nums.sort_by(|a,b| b.cmp(a)); - let mut last = nums[0]; - let mut ans = nums[0]; - for i in 1..nums.len() { - let t = nums[i]; - if t <= 0 { - break + 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); } - if t == last { - continue; - } - last = t; - ans += t; + arr[pair[0] as usize].push(pair[1]); } - ans + 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_sum(vec![-1,-2]); + let sl = Solution::max_subarrays(5, vec![vec![1, 2], vec![2, 5], vec![3, 5]]); println!("{}", sl); } +