вывод индексов граничных элементов и их значений

Решаю задачу на алгоритмы. Текст задачи приложил в виде скрина, так как все не скопировать(сайт использует картинки на месте формул) введите сюда описание изображения

введите сюда описание изображения

Я написал сортировку слиянием:

public static int [] mergeSort(int lPoint, int rPoint, int[] arr)
        {
            int len = arr.Length;
            if(len == 1)
            {
                return arr;
            }
            int[] l = arr.Take(arr.Length / 2).ToArray();
            int[] r = arr.Skip(arr.Length/2).ToArray();
            l = mergeSort(1, l.Length/2, l);
            r = mergeSort(r.Length/2, r.Length, r);
            
            return mergeTwoArr(lPoint,rPoint, l, r);

            

        }
public static int[] mergeTwoArr(int l, int r,int [] arr1, int[] arr2)
        {
            int i = 0;
            int j = 0;
            int k = 0;

            int[] result = new int[arr1.Length + arr2.Length];
            while (i < arr1.Length && j < arr2.Length)
            {
                if (arr1[i] < arr2[j])
                {
                    result[k] = arr1[i];
                    i++;
                }
                else 
                {
                    result[k] = arr2[j];
                    j++;
                }
                k++;

            }
            while(i < arr1.Length)
            {
                result[k] = arr1[i];
                k++;
                i++;
            }
            while (j < arr2.Length)
            {
                result[k] = arr2[j];
                k++;
                j++;
            }
            //Console.WriteLine($"{l} {r} {result[l - 1]} {result[r - 1]}");
            return result;
            
        }
    }


Но я не могу понять, как правильно вывести индексы граничных элементов. Подскажите пожалуйста, как это можно сделать


Ответы (0 шт):