/** * [2865] Beautiful Towers I */ pub struct Solution {} // submission codes start here impl Solution { pub fn maximum_sum_of_heights(max_heights: Vec) -> i64 { let mut result = 0; for peek in 0..max_heights.len() { let mut total_height = max_heights[peek] as i64; let mut heights = vec![0;max_heights.len()]; heights[peek] = max_heights[peek]; for i in (0..peek).rev() { heights[i] = max_heights[i].min(heights[i + 1]); total_height += heights[i] as i64; } for i in peek + 1..max_heights.len() { heights[i] = max_heights[i].min(heights[i - 1]); total_height += heights[i] as i64; } result = result.max(total_height); } result } } // submission codes end #[cfg(test)] mod tests { use super::*; #[test] fn test_2865() { assert_eq!(Solution::maximum_sum_of_heights(vec![5,3,4,1,1]), 13); assert_eq!(Solution::maximum_sum_of_heights(vec![6,5,3,9,2,6]), 22); assert_eq!(Solution::maximum_sum_of_heights(vec![3,2,5,5,2,3]), 18); } }