2023-01-19 ABC094 の A, B, C, D を解いた / セキュリティアップデートしようとしている
ABC094 : AtCoder Beginner Contest 094 の A, B, C, D を解いた。
- A - Cats and Dogs
https://atcoder.jp/contests/abc094/tasks/abc094_a
- 提出: https://atcoder.jp/contests/abc094/submissions/38155759
(a..=a + b).contains(&x)
- B - Toll Gates
https://atcoder.jp/contests/abc094/tasks/abc094_b
- 提出: https://atcoder.jp/contests/abc094/submissions/38155843
A
からx
より小さい数とより大きい数の個数をそれぞれ求めて小さい側が答え
- C - Many Medians
https://atcoder.jp/contests/abc094/tasks/arc095_a
- 提出: https://atcoder.jp/contests/abc094/submissions/38155988
X
のソートして中央の 2 個を調べておき、小さい側を L, 大きい側を R とする- 取り除いた数が L 以下なら中央値は R になる、そうでなければ L になる
- D - Binomial Coefficients
https://atcoder.jp/contests/abc094/tasks/arc095_b
- 提出: https://atcoder.jp/contests/abc094/submissions/38156388
- 解説 AC
- nCr は n が大きくて r が中央付近だと大きい
- n は a の最大値で、 r は a の最大値の半分を選んだ
- r は a の最大値の半分を
/2
で表現したら整数除算の関係でズレて 1WA
use proconio::input;
fn main() {
input! {
n: usize,
mut a: [i64; n],
};
a.sort();
let x = a[n - 1];
let mut k = (a[0], (x - 2 * a[0]).abs());
for a_i in a.into_iter().take(n - 1) {
let d = (x - 2 * a_i).abs();
if d <= k.1 {
k = (a_i, d);
}
}
println!("{} {}", x, k.0);
}
セキュリティアップデートをしようと思い、 bouzuya/blog.bouzuya.net の依存関係のバージョンを上げたら、まずいのは bouzuya/kraken だと言われ、 kraken の依存関係のバージョンを上げたら出力結果が変わったので面倒になってきた。もうメンテナンスするつもりがないので、いまの出力結果と同じになるものを Rust で書き直すつもりで居る。 HTML 側は面倒だけど JSON 側は比較的容易なはず。
今日のコミット。