#![allow(unused)] // use itertools::Itertools; use proconio::*; use std::collections::*; fn main() { input! { n: usize, m: usize, w: usize, mut a: [usize; n], b: [usize; m], c: [usize; m] } a.sort(); let a = a.iter().rev().collect::>(); let mut rui = vec![0]; for ai in a { rui.push(rui[rui.len()-1]+ai) } let mut ans = 0; for bit in 0..1< 0 { val_cnt += c[i]; weight_cnt += b[i]; } } if weight_cnt > w { continue; } val_cnt += rui[(w-weight_cnt).min(n)]; ans = ans.max(val_cnt) } println!("{ans}") }