use proconio::input; use std::collections::HashSet; fn main() { input! { n: usize, rating: [i64; n], } let mut ans = (rating[.. n / 2].iter().sum::() - rating[n / 2 .. n - n % 2].iter().sum::()).abs(); let mut dp = HashSet::<(i32, i64)>::new(); let mut add = vec![]; for &r in &rating { add.push((1i32, r)); add.push((-1i32, -r)); for &(x, y) in &dp { if (x + 1i32).abs() <= n as i32 / 2 && (y + r).abs() < ans * 2 { add.push((x + 1, y + r)); } if (x - 1i32).abs() <= n as i32 / 2 && (y - r).abs() < ans * 2 { add.push((x - 1, y - r)); } } for x in add.drain(..) { dp.insert(x); } } for (x, y) in dp { if x == 0 { ans = ans.min(y.abs()); } } println!("{ans}"); }