Присоединиться

11 класс·высокий уровень

Необходимо выбрать из последовательности три числа так, чтобы

Условие

Дана последовательность целых чисел. Расстояние между элементами последовательности — это разность их порядковых номеров. Например, если два элемента стоят в последовательности рядом, расстояние между ними равно 1, если два элемента стоят через один — расстояние равно 2 и так далее.

Необходимо выбрать из последовательности три числа так, чтобы расстояние между какими-то двумя из них было равно 3K, а сумма всех трёх чисел была максимально возможной.

Запишите в ответе найденную сумму. Входные данные.

Файл АФайл ВПервая строка входного файла содержит целое число K — параметр для определения расстояния, вторая строка содержит число N — общее количество чисел в наборе (1 < 2K < N). Каждая из следующих N строк содержит одно число, не превышающее по модулю 10⁷.Пример входного файла.

Первая строка входного файла содержит целое число K — параметр для определения расстояния, вторая строка содержит число N — общее количество чисел в наборе (1 < 3K < N). Каждая из следующих N строк содержит одно число, не превышающее по модулю 10⁷.Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала требуемую сумму для файла A, затем — для файла B. Ответ:

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Приведем решение на языке Python для файла A.f = open('27-A.txt')k = int(f.readline()) * 3n = int(f.readline())a = [int(i) for i in f]maxi = -1010for i in range(n): for j in range(i+1,n): for t in range(j+1,n): if j - i == k or t - j == k or t - i == k: maxi = max(maxi, a[i] + a[j] + a[t])print(maxi) Приведем решение на языке Python для файлов A и B.f = open('27-B.txt')k = int(f.readline()) * 3n = int(f.readline())a = [int(i) for i in f]maxi = -1010summa = [(a[i] + a[i + k], i, i + k) for i in range(n - k)]summa.sort(reverse = True)for i in range(n): for j, t, p in summa: if i != t and i != p: maxi = max(maxi, a[i] + j) breakprint(maxi)

Осталось ещё 1 шаг

  1. Приведём решение Юрия Красильникова на языке…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Программирование»

Необходимо выбрать из последовательности три числа так, чтобы — решение с объяснением | Lom Ai