Задача B
это которая про две пары индексов, с минимальной и максимальной дельтой?
там нужен просто один цикл по массиву. В нем надо поддерживать наилучшие найденные результаты, а так же максимальный и минимальный элементы слева от текущего. Набросок на js:
function findMM(arr) {
let minDelta = Infinity, maxDelta = -Infinity;
let i1 = 0, i2 = 0, j1 = 0; j2 = 0;
let iMax = 0; // индекс максимального элемента
let iMin = 0; // индекс минимального элемента
for (let j = 1; j < arr.length; ++j) {
// минимальная дельта - разница между минимальным элементом
// среди ранее найденных, и текущим
if (arr[iMin] - arr[j] < minDelta) {
i1 = iMin;
j1 = j;
minDelta = arr[iMin] - arr[j];
}
// максимальная дельта - разница между максимальным элементом
// среди ранее найденных, и текущим
if (arr[iMax] - arr[j] > maxDelta) {
i2 = iMax;
j2 = j;
maxDelta = arr[iMax] - arr[j];
}
if (arr[j] < arr[iMin]) {
iMin = j;
}
if (arr[j] > arr[iMax]) {
iMax = j;
}
}
return [[i1, j1], [i2, j2]];
}