ABC102 : AtCoder Beginner Contest 102 の A, B, C を解いた。
- A - Multiple of 2 and N
https://atcoder.jp/contests/abc102/tasks/abc102_a
- 提出: https://atcoder.jp/contests/abc102/submissions/40126554
if n % 2 == 0 { n } else { 2 * n }
- B - Maximum Difference
https://atcoder.jp/contests/abc102/tasks/abc102_b
- 提出: https://atcoder.jp/contests/abc102/submissions/40127703
N <= 100
と小さいので単純に 2 要素を選択して計算……とすれば良い- 最大値と最小値で求めても良い
- C - Linear Approximation
https://atcoder.jp/contests/abc102/tasks/arc100_a
- 提出: https://atcoder.jp/contests/abc102/submissions/40128038
B_i = A_i - i
として先に計算してしまえばabs(B_i - b)
を最小化すればいい- ソートして中央値を b として使えば答えになる (自信なし)
use proconio::input; fn main() { input! { n: usize, a: [i64; n], }; let mut c = vec![]; for (i, a_i) in a.iter().copied().enumerate() { c.push(a_i - (i + 1) as i64); } c.sort(); let x = if n % 2 == 0 { (c[n / 2 - 1] + c[n / 2]) / 2 } else { c[n / 2] }; let ans = c.iter().copied().map(|c_i| (c_i - x).abs()).sum::<i64>(); println!("{}", ans); }
今日のコミット。