Construct Target Array With Multiple Sums LeetCode solution in Rust
1type Num = u64;23use std::collections::BinaryHeap;45impl Solution {6fn preproc(vec: Vec<i32>) -> Vec<Num> {7vec.into_iter().map(|e| e as Num).collect::<Vec<_>>()8}910pub fn is_possible(vec: Vec<i32>) -> bool {11let vec = Self::preproc(vec);1213let mut heap_sum = vec.iter().sum::<Num>();14let mut heap = BinaryHeap::from(vec);15while let Some(e) = heap.pop() {16heap_sum -= e;17if e <= heap_sum || heap_sum < 1 {18heap.push(e);19break;20}2122let mut e_next = e % heap_sum;23if e_next < 1 {24e_next += heap_sum;25}2627heap_sum += e_next;28heap.push(e_next);29}3031heap.into_iter().filter(|&e| e != 1).count() < 132}33}