Module c
Expand description
ยงABC 376 C - Prepare Another Box
refs: https://atcoder.jp/contests/abc376/tasks/abc376_c
use proconio::input;
const INF: usize = (1e+9 as usize) + 1;
fn main() {
input! {
n: usize,
mut a: [usize; n],
mut b: [usize; n - 1],
}
a.sort();
b.sort();
let mut l = 0;
let mut r = INF;
while r - l > 1 {
let mid = (l + r) / 2;
if satisfy(mid, &a, &b) {
r = mid;
} else {
l = mid;
}
}
if r != INF {
println!("{r}");
} else {
println!("-1");
}
}
fn satisfy(insertion: usize, a: &Vec<usize>, b: &Vec<usize>) -> bool {
let idx = b.partition_point(|&x| x <= insertion);
let mut tb = b.clone();
tb.insert(idx, insertion);
for i in 0..a.len() {
if a[i] > tb[i] {
return false;
}
}
true
}