rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn bag_of_tokens_score(mut tokens: Vec<i32>, mut p: i32) -> i32 {
        let n = tokens.len();
        if n == 0 {
            return 0;
        }
        tokens.sort_unstable();
        let mut l = 0;
        let mut r = n - 1;
        let mut point = 0;
        let mut res = 0;
        while l <= r {
            if tokens[l] <= p {
                p -= tokens[l];
                point += 1;
                res = res.max(point);
                l += 1;
            } else {
                if point > 0 {
                    p += tokens[r];
                    point -= 1;
                    r -= 1;
                } else {
                    break;
                }
            }
        }
        res
    }
}

#[test]
fn test() {
    let tokens = vec![100];
    let p = 50;
    let res = 0;
    assert_eq!(Solution::bag_of_tokens_score(tokens, p), res);
    let tokens = vec![100, 200];
    let p = 150;
    let res = 1;
    assert_eq!(Solution::bag_of_tokens_score(tokens, p), res);
    let tokens = vec![100, 200, 300, 400];
    let p = 200;
    let res = 2;
    assert_eq!(Solution::bag_of_tokens_score(tokens, p), res);
}