まず全てのタスクをAIに任せます。精度の総和はの総和となります。そこから、番目のタスクを自分で行った場合、精度の総和はだけ変化します。
よって、が正の値のうち大きい順に個をの総和に足せば最大化を達成できます。
xxxxxxxxxx
use proconio::*;
fn main() {
input! {
n: usize,
k: usize,
a: [i64; n],
b: [i64; n],
}
let mut d = vec![0; n];
for i in 0..n {
d[i] = b[i] - a[i];
}
d.sort();
d.reverse();
let mut ans: i64 = a.iter().sum();
for i in 0..k {
ans += d[i].max(0);
}
println!("{}", ans);
}