Проблема:

Моника хочет купить клавиатуру и 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();
}