1
pub fn normalize(mut vec: [Vec<u8>; 3], diff: u8) -> Option<[Vec<u8>; 3]> {6
if vec[1].is_empty() && vec[2].is_empty() {10
if vec[1].is_empty() {12
return normalize(vec, (diff + 1) % 3);15
if vec[2].is_empty() {17
return normalize(vec, (diff + 2) % 3);21
vec[diff as usize].pop();26
fn preproc(mut vec: Vec<i32>) -> ([Vec<u8>; 3], u8) {29
let diff = vec.iter().sum::<i32>() as u32;30
let diff = (diff % 3) as u8;32
let mut ret = [vec![], vec![], vec![]];35
ret[e as usize % 3].push(e as u8);41
fn _impl(vec: Vec<i32>) -> Option<Vec<u8>> {42
let (vec, diff) = Self::preproc(vec);43
let [mut vec_0, mut vec_1, mut vec_2] = normalize(vec, diff)?;45
vec_0.append(&mut vec_1);46
vec_0.append(&mut vec_2);47
vec_0.sort_unstable();60
pub fn largest_multiple_of_three(vec: Vec<i32>) -> String {61
let ret = if let Some(inner) = Self::_impl(vec) {67
ret.into_iter().map(|e| (e + '0' as u8) as char).collect()