atcoder-solutionsatcoder-solutions
abc471_c

Cookies and Greedy Takahashi の解説

abc471_c by @ohnuma

解説

これもBTreeSetを使えばやるだけに帰着できます。

fn main() { input! { n: usize, a: [isize; n] } let mut set = a.into_iter().collect::<BTreeSet<isize>>(); let mut ans = 0; let mut now = 0; while !set.is_empty() { let &left = set.range(..now).next_back().unwrap_or(&(isize::MIN / 2)); let &right = set.range(now..).next().unwrap_or(&(isize::MAX / 2)); let ldiff = now - left; let rdiff = right - now; if ldiff <= rdiff { ans += ldiff; now = left; set.remove(&left); } else { ans += rdiff; now = right; set.remove(&right); } } println!("{}", ans); }

コメント