fn main() { // A1つをP分、 // B1つをQ分、 // C1つをR分、 // D1つをS分 // かかる時間が少ないものから貪欲にやる let abcd : Vec = read_numbers_vec(4); let pqrst : Vec = read_numbers_vec(5); // 1問あたりの時間と問題数をペアにする(昇順) let mut qt_pair = Vec::new(); for i in 0..4 { qt_pair.push((pqrst[i], abcd[i])); } qt_pair.sort(); let mut cnt = 0; let mut rest_time = pqrst[4]; for i in 0..4 { // 問題iセットのレベルを全て解ける if qt_pair[i].0 * qt_pair[i].1 <= rest_time { cnt += qt_pair[i].1; rest_time -= qt_pair[i].0 * qt_pair[i].1; } // 解けない問題が出てくる else { let enabled_cnt = rest_time / qt_pair[i].0; cnt += enabled_cnt; rest_time -= qt_pair[i].0 * enabled_cnt; } } println!("{}", cnt); } // ---------- start input macro ---------- // const MOD17: usize = 1000000007; // const MOD93: usize = 998244353; // const INF: usize = 1 << 60; // let dx = vec![!0, 0, 1, 0]; // 上左下右 // let dy = vec![0, !0, 0, 1]; // 上左下右 // let d = vec!{(!0, 0), (0, !0), (1, 0), (0, 1)}; // 上左下右 #[allow(unused)] use std::{ io, io::stderr, io::stdin, io::BufRead, io::Write, str::FromStr, mem::swap, cmp::min, cmp::max, cmp::Reverse, collections::HashSet, collections::BTreeSet, collections::HashMap, collections::BTreeMap, collections::BinaryHeap, collections::VecDeque, }; // usizeで受け取り #[allow(unused)] fn read_usize() -> usize { let mut input = String::new(); io::stdout().flush().unwrap(); // 出力バッファをフラッシュ io::stdin().read_line(&mut input).unwrap(); input.trim().parse().unwrap() } // 数値型を配列で受け取り #[allow(unused)] fn read_numbers_vec(n: usize) -> Vec where T: FromStr, ::Err: std::fmt::Debug, { let mut input = String::new(); io::stdout().flush().unwrap(); io::stdin().read_line(&mut input).unwrap(); input.trim() .split_whitespace() // 空白区切りで分割 .take(n) // 指定された個数分だけ取り出す .map(|s| s.parse().unwrap()) // 各値をTに変換 .collect() // ベクターとして収集 } // char型配列で受け取り #[allow(unused)] fn read_char_array() -> Vec { let mut input = String::new(); io::stdout().flush().unwrap(); io::stdin().read_line(&mut input).unwrap(); input.trim().chars().collect() } // 文字列型で受け取り #[allow(unused)] fn read_string() -> String { let mut input = String::new(); io::stdout().flush().unwrap(); io::stdin().read_line(&mut input).unwrap(); input.trim().to_string() } // 配列のスペース区切り出力 #[allow(unused)] fn vec_print(vec: &Vec) { let sz = vec.len(); for i in 0..sz-1 { print!("{} ", vec[i]); } println!("{}", vec[sz-1]); } // ---------- end input macro ----------