Нужно код ревью, решение не проходит тест
После очередного завершённого проекта программист Пётр решил переехать в деревню и заняться сельским хозяйством. Мелочиться он не стал, поэтому помимо домика в деревне сразу приобрёл несколько идущих подряд параллельных участков поля, расположенных вдоль прямой дороги. Участки были разделены заборами, при этом все заборы начинались от той самой дороги, но заканчивались на разном удалении от неё не доходя до противоположной границы участка.
Петру нужно объединить эти участки. Но так как Пётр перфекционист, он непременно хочет, чтобы получившийся объединённый участок:
1. был прямоугольным;
2. был ограничен дорогой и двумя уже имеющимися заборами (забор необязательно использовать целиком, а вот продлять забор нельзя);
3. имел наибольшую возможную площадь.
Как и положено разработчику Пётр получает 300к/наносек, поэтому его совсем не беспокоит тот факт, что часть территории окажется неиспользованной.
Пётр хочет отдохнуть, поэтому он попросил вас помочь с нахождением площади такого участка.
Помогите Петру и найдите два забора, которые вместе с дорогой образуют максимальный по площади прямоугольный участок, и выведите эту площадь.
Ширина всех участков одинакова и равна 1.
Входные данные (поступают в стандартный поток ввода)
На вход вашей программе подаётся одна строка, содержащая массив целых чисел length, где length[i] - длина i-ого забора. Иными словами i-ый элемент массива задаёт забор в виде отрезка от (i, 0) до (i, length[i]), где 0 - это дорога.
Причём 0≤length[i]≤10 000, а количество заборов n удовлетворяет условию 2≤n≤100 000.
Все входные данные наших тестов всегда соблюдают указанные параметры, дополнительные проверки не требуются.
const readline = require('readline').createInterface(process.stdin, process.stdout);
var arr=[] ;
var numbers=[];
var lengthBetweenNumbers = [];
readline.on('line', (line) => {
arr.push(line.split(' '));
for(let elem of arr){
for(let i=0;i<elem.length;i++){
numbers.push(Number(elem[i]));
}
}
if(numbers.length==2){
for(let k=0;k<numbers.length;k++){
lengthBetweenNumbers.push(numbers[k]);
lengthBetweenNumbers.sort((a, b) => a - b).reverse();
}
}
else if(numbers.length>2){
for (let j = 0; j < numbers.length; j++) {
for (let i = 0; i < numbers.length; i++) {
if (numbers[j] > numbers[i]) {
lengthBetweenNumbers.push((Math.abs(i - j)-1) * numbers[j]);
} else if (numbers[j] < numbers[i]) {
lengthBetweenNumbers.push((Math.abs(i - j)-1) * numbers[i]);
}
}
}
lengthBetweenNumbers.sort((a, b) => a - b);
}
}
).on('close', () => {
console.log(lengthBetweenNumbers[lengthBetweenNumbers.length - 1])
process.exit(0)})