2023-03-28 ABC102 の A, B, C を解いた
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);
}
今日のコミット。