Проблема:
Моника хочет купить клавиатуру и USB-накопитель в своем любимом магазине электроники. В магазине есть несколько моделей каждого. Моника хочет потратить на предметы как можно больше, учитывая ее бюджет.
Учитывая прайс-листы на клавиатуры и USB-накопители в магазине, а также бюджет Моники, найдите и распечатайте сумму денег, которую Моника потратит. Если у нее не хватает денег и на клавиатуру, и на USB-накопитель, вместо этого напечатайте -1
. Она купит только два необходимых предмета.
Например, предположим, что она должна потратить. Три типа клавиатур стоят . Стоимость двух USB-накопителей. Она могла бы купить , или . Она выбирает последнее. Она не может купить больше, чем предметов, поэтому она не может потратить ровно .
Описание функции
Выполните функцию getMoneySpent в редакторе ниже. Он должен вернуть максимальную общую стоимость двух предметов в рамках бюджета Моники или если она не может позволить себе оба предмета.
getMoneySpent имеет следующие параметры:
- клавиатуры: массив целых чисел, представляющих цены на клавиатуру.
- диски: массив целых чисел, представляющих цены на диски
- b: количество денежных единиц в бюджете Моники.
Формат ввода
Первая строка содержит три целых числа через пробел , , и , ее бюджет, количество моделей клавиатур и количество моделей USB-накопителей.
Вторая строка содержит целые числа через пробел , цены каждой модели клавиатуры.< br /> Третья строка содержит целые числа, разделенные пробелами, цены на USB-накопители.
Формат вывода
Выведите единственное целое число, обозначающее сумму денег, которую потратит Моника. Если у нее недостаточно денег, чтобы купить одну клавиатуру и один USB-накопитель, вместо этого напечатайте -1
.
Образец ввода 0
10 2 3 3 1 5 2 8
Пример вывода 0
9
Пример входных данных 1
5 1 1 4 5
Пример вывода 1
-1
Решение:
'use strict'; const fs = require('fs'); process.stdin.resume(); process.stdin.setEncoding('utf-8'); let inputString = ''; let currentLine = 0; process.stdin.on('data', inputStdin => { inputString += inputStdin; }); process.stdin.on('end', _ => { inputString = inputString.trim().split('\n').map(str => str.trim()); main(); }); function readLine() { return inputString[currentLine++]; } /*##########----code logic ----########## */ function getMoneySpent(keyboards, drives, b){ let maxPrice = -1 keyboards.forEach((keyboard)=>{ drives.forEach((drive)=>{ let currentPrice = keyboard+drive if(currentPrice <=b){ maxPrice=Math.max(maxPrice,currentPrice) } }) }) return maxPrice } /*##########----End ofcode logic ----########## */ function main() { const ws = fs.createWriteStream(process.env.OUTPUT_PATH); const bnm = readLine().split(' '); const b = parseInt(bnm[0], 10); const n = parseInt(bnm[1], 10); const m = parseInt(bnm[2], 10); const keyboards = readLine().split(' ').map(keyboardsTemp => parseInt(keyboardsTemp, 10)); const drives = readLine().split(' ').map(drivesTemp => parseInt(drivesTemp, 10)); /* * The maximum amount of money she can spend on a keyboard and USB drive, or -1 if she can't purchase both items */ let moneySpent = getMoneySpent(keyboards, drives, b); ws.write(moneySpent + "\n"); ws.end(); }