diff options
Diffstat (limited to 'max_bags_rocks.rs')
-rw-r--r-- | max_bags_rocks.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/max_bags_rocks.rs b/max_bags_rocks.rs new file mode 100644 index 0000000..808c393 --- /dev/null +++ b/max_bags_rocks.rs @@ -0,0 +1,20 @@ +struct Solution; + +impl Solution { + pub fn maximum_bags(capacity: Vec<i32>, rocks: Vec<i32>, mut additional_rocks: i32) -> i32 { + let mut bag_space = (0..rocks.len()).map(|i| capacity[i] - rocks[i]) + .filter(|&d| d > 0) + .collect::<Vec<_>>(); + let bag_full = rocks.len() - bag_space.len(); + bag_space.sort_unstable(); + bag_space.into_iter() + .take_while(|&n| { additional_rocks -= n; additional_rocks >= 0 }) + .count() as i32 + bag_full as i32 + } +} + +fn main() { + let capacity = vec![2,3,4,5]; + let rocks = vec![1,2,4,4]; + print!("{}", Solution::maximum_bags(capacity, rocks, 2)); //expect: 3 +} |