const n: i32 = 3; const k: i32 = 2; const w: [i32; 3] = [2, 5, 2]; const v: [i32; 3] = [2, 3, 1]; const INF: f32 = 1e18; fn C(x: f32) -> bool { let mut y: Vec<i32> = Vec::new(); for i in 0.. { if i < n { break; } y[i] = v[i] - x * w[i]; } y.sort(); let mut sum = 0; for i in 0.. { if i < k { break; } sum += y[n - i -1]; } return sum >= 0; } fn main() { let mut lb = 0; let mut ub = INF; for i in 0..100 { let mid = (lb + ub) / 2; if (C(mid)) { lb = mid; } else { ub = mid; } } println!("{}", ub); }

