2023-07-11 ABC077 C を解いた
bouzuya/rust-atcoder でふと target/
を共有できるかもと思い cargo workspace を使用するように変更してみた。明日また試す。
- Snuke Festival (AtCoder Beginner Contest 077:C問題)
https://atcoder.jp/contests/abc077/tasks/arc084_a
- https://atcoder.jp/contests/abc077/submissions/43469359
- 変数が3つあるときは真ん中を固定、のやつ
- B_i を走査 (固定) する
- B_i 未満の個数と B_i + 1 以上の個数を得られれば掛けてその B_i のときの個数が分かる
- B_i 未満の個数は A をソートしておけば二分探索で求められる
- 同様に B_i + 1 以上の個数も C をソートしておけば二分探索で求められる
- 各 B_i のときの個数の和が答えになる
use proconio::input;
use superslice::Ext;
fn main() {
input! {
n: usize,
mut a: [usize; n],
b: [usize; n],
mut c: [usize; n],
}
a.sort();
c.sort();
let mut sum = 0_usize;
for b_i in b {
let count_a = a.lower_bound(&b_i);
let count_b = n - c.lower_bound(&(b_i + 1));
sum += count_a * count_b;
}
let ans = sum;
println!("{}", ans);
}
今日のコミット。