diff --git a/src/problem/mod.rs b/src/problem/mod.rs index d4d2ac4..f509a9f 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -686,3 +686,5 @@ mod p3372_maximize_the_number_of_target_nodes_after_connecting_trees_i; mod p3373_maximize_the_number_of_target_nodes_after_connecting_trees_ii; mod p2359_find_closest_node_to_given_two_nodes; + +mod p2929_distribute_candies_among_children_ii; diff --git a/src/problem/p2929_distribute_candies_among_children_ii.rs b/src/problem/p2929_distribute_candies_among_children_ii.rs new file mode 100644 index 0000000..3c82c7c --- /dev/null +++ b/src/problem/p2929_distribute_candies_among_children_ii.rs @@ -0,0 +1,31 @@ +/** + * [2929] Distribute Candies Among Children II + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn distribute_candies(n: i32, limit: i32) -> i64 { + // 0 <= i <= min(n, limit) + // 0 <= j <= min(n, limit) + // 0 <= n - i - j <= min(n, limit) -> i + j <= n + let (n, limit) = (n as i64, limit as i64); + (0..=n.min(limit)) + .map(|i| (limit.min(n - i) - (n - limit - i).max(0) + 1).max(0)) + .sum() + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2929() { + assert_eq!(3, Solution::distribute_candies(5, 2)); + assert_eq!(10, Solution::distribute_candies(3, 3)); + } +}