2
pub fn maximum_white_tiles(mut tiles: Vec<Vec<i32>>, carpet_len: i32) -> i32 {4
tiles.sort_by(|a, b| a[0].cmp(&b[0]));6
let mut stack = vec![tiles[0][1] - tiles[0][0] + 1];8
stack.push(tiles[i][0] - tiles[i - 1][1] - 1);9
stack.push(tiles[i][1] - tiles[i][0] + 1);13
let mut memo = vec![(0, 0, false); n + 1];16
memo[i + 1].0 = memo[i].0;17
memo[i + 1].1 = memo[i].1;18
memo[i + 1].0 += stack[i];20
memo[i + 1].1 += stack[i];28
while ri < n && memo[ri].0 - memo[li].0 <= carpet_len {32
let sum = memo[ri].0 - memo[li].0;33
let score = memo[ri].1 - memo[li].1;36
max = std::cmp::max(max, score);38
let over = sum - carpet_len;39
let actual_score = score - over;40
max = std::cmp::max(max, actual_score);43
max = std::cmp::max(max, score);