/** * [1686] Stone Game VI */ pub struct Solution {} // submission codes start here struct Stone { sum: i32, alice: i32, bob: i32, } impl Solution { pub fn stone_game_vi(alice_values: Vec, bob_values: Vec) -> i32 { let mut stones: Vec = alice_values .iter() .zip(bob_values.iter()) .map(|(a, b)| Stone { sum: *a + *b, alice: *a, bob: *b, }) .collect(); stones.sort_unstable_by(|a, b| b.sum.cmp(&a.sum)); let alice_sum: i32 = stones.iter().step_by(2).map(|s| s.alice).sum(); let bob_sum: i32 = stones.iter().skip(1).step_by(2).map(|s| s.bob).sum(); if alice_sum > bob_sum { 1 } else if alice_sum < bob_sum { -1 } else { 0 } } } // submission codes end #[cfg(test)] mod tests { use super::*; #[test] fn test_1686() { assert_eq!(Solution::stone_game_vi(vec![1, 3], vec![2, 1]), 1); } }