rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;
use std::cmp::Reverse;
use std::collections::BinaryHeap;

impl Solution {
    fn maximum_number_of_ones(width: i32, height: i32, side_length: i32, max_ones: i32) -> i32 {
        let width = width as usize;
        let height = height as usize;
        let side_length = side_length as usize;
        let max_ones = max_ones as usize;
        let mut queue: BinaryHeap<Reverse<usize>> = BinaryHeap::new();
        for i in 0..side_length {
            for j in 0..side_length {
                let rows = 1 + (height - (i + 1)) / side_length;
                let cols = 1 + (width - (j + 1)) / side_length;
                queue.push(Reverse(rows * cols));
                if queue.len() > max_ones {
                    queue.pop();
                }
            }
        }
        queue.into_iter().map(|t| t.0).sum::<usize>() as i32
    }
}

#[test]
fn test() {
    let width = 3;
    let height = 3;
    let side_length = 2;
    let max_ones = 1;
    let res = 4;
    assert_eq!(
        Solution::maximum_number_of_ones(width, height, side_length, max_ones),
        res
    );
    let width = 3;
    let height = 3;
    let side_length = 2;
    let max_ones = 2;
    let res = 6;
    assert_eq!(
        Solution::maximum_number_of_ones(width, height, side_length, max_ones),
        res
    );
}