Определите минимально возможную сумму выбранных чисел.
Условие
Дана последовательность целых чисел. Необходимо выбрать из последовательности три числа так, чтобы они образовали возрастающую последовательность. Определите минимально возможную сумму выбранных чисел. Входные данные.
Файл АФайл ВПервая строка входного файла содержит число N — общее количество чисел в последовательности. Каждая из следующих N строк содержит одно число, не превышающее 10⁸.Пример.
Дан входной файл:43526Из этого файла надо выбрать числа 3, 5 и 6, сумма которых равна 14.Выбрать числа 3, 5 и 2 нельзя, так как они не образуют возрастающую последовательность.
Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала требуемую сумму для файла A, затем — для файла B. Ответ:
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Приведем решение для файла А на языке Python.f = open ('27-A.txt')n = int(f.readline())a = []for x in range(n): a.append(int(f.readline())) min_summa=1010for i in range (len(a)): for j in range(i+1,len(a)): for k in range(j+1,len(a)): if a[i] < a[j] < a[k]: min_summa=min(min_summa, a[i]+a[j]+a[k]) print(min_summa) Приведем решение на языке Python.f = open ('27-B.txt')n = int(f.readline())a = []for x in range(n): a.append([int(f.readline()),x]) # Добавляем в массив число и его индексa.sort() a = a[:10] # Так как массив отсортирован по возрастанию, берем первые 10 значений и ищем среди них 3 числа удовлетворяющие условию. Если среди 10 чисел не будет найден ответ, диапазон можно увеличитьa.sort(key=lambda x: x[1]) #сортируем массив по индексам min_summa = 1010for i in range (len(a)): for j in range(i+1,len(a)): for k in range(j+1,len(a)): if a[i][0] < a[j][0] < a[k][0]: min_summa = min(min_summa, a[i][0] + a[j][0] + a[k][0])print(min_summa)
Осталось ещё 1 шаг
if left[i-1] < a[i] < right[i+1]]print(min(r))…
Бесплатно · займёт минуту