Информатика. ЕГЭ

Задание 27. Информатика. ЕГЭ 2024. Крылов-1

Просмотры: 1368
Изменено: 1 февраля 2025

По каналу связи ежедневно раз в день в течение \(N\) дней (\(N\) — натуральное число) передаётся последовательность натуральных чисел — сумма выручки в некотором отделении банка за день.

Определите три таких переданных числа, чтобы между моментами передачи любых из двух из них прошло не менее \(K\) дней, а сумма этих трёх чисел была минимально возможной. Запишите в ответе найденную сумму.

Входные данные

Даны два входных файла (файл \(A\) и файл \(B\)), каждый из которых в первой строке содержит натуральное число \(K\) — минимальное количество дней, которое должно пройти между моментами передачи сумм выручки, а во второй — количество переданных значений \(N\) ( \(1 \leqslant N \leqslant 10~000~000\), \(N>K\)). В каждой из следующих \(N\) строк находится одно натуральное число, не превышающее \(10~000~000\), которое обозначает сумму выручки в отделении банка за соответствующий день.

Запишите в ответе два числа: сначала значение искомой величины для файла \(A\), затем — для файла \(B\).

Типовой пример организации данных во входном файле
\(2\)
\(6\)
\(15\)
\(26\)
\(30\)
\(23\)
\(22\)
\(20\)
При таких исходных данных искомая величина равна \(65\) — это сумма значений выручки, полученной в первый, третий и шестой дни.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

Предупреждение: для обработки файла \(B\) не следует использовать переборный алгоритм, вычисляющий сумму для всех всевозможных вариантов, поскольку по такому алгоритму программа будет выполняться слишком долго.

Решение:

Python

Переборный алгоритм


f = open('27v01_A.txt')
K = int(f.readline())
N = int(f.readline())
a = [int(x) for x in f]

min_sum = 10 * 100

for i in range(N - 2 * K):
    for j in range(i + K, N - K):
        for k in range(i + 2 * K, N):
            min_sum = min(min_sum, a[i] + a[j] + a[k])

print(min_sum)

Эффективный алгоритм


flist = ('27v01_A.txt', '27v01_B.txt')

for fname in flist:
    f = open(fname)
    K = int(f.readline())
    N = int(f.readline())

    a = [int(x) for x in f]

    min_left = [10 * 20] * N
    min_right = [10 * 20] * N

    min_left[0] = a[0]
    for i in range(1, N):
        min_left[i] = min(min_left[i - 1], a[i])

    min_right[-1] = a[-1]
    for i in range(N - 2, -1, -1):
        min_right[i] = min(min_right[i + 1], a[i])

    min_sum = 10 ** 20
    for i in range(K, N - K):
        min_sum = min(min_sum, min_left[i - K] + a[i] + min_right[i + K])

    print(min_sum)

Эффективный однопроходный алгоритм


flist=('27v01_A.txt', '27v01_B.txt')

for fname in flist:
    f = open(fname)
    K = int(f.readline())
    N = int(f.readline())

    a = [int(x) for x in f]

    min1, min2, min3 = 10**10, 10**10, 10**10

    for i in range(N - 2*K):
        min1 = min(min1, a[i])
        min2 = min(min2, min1 + a[i + k])
        min3 = min(min3, min2 + a[i + 2*k])

    print(min3)

Ответ: \(987 \,\, 11408812\)

Новый тренажёр-эмулятор
Станции КЕГЭ

Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене

Новое видео
Методы решения задания 16 ЕГЭ по Информатике «Вычисление рекуррентных выражений»
Поддержать автора сайта!
​ Поддержите автора сайта, если материалы, размещённые здесь, оказались вам полезны.
Расписание пробников Статграда в 2026/27 учебном году
Информатика ОГЭ 9 класс
  1. 13 октября 2026 года
  2. 3 декабря 2026 года
  3. 21 января 2027 года
  4. 19 февраля 2027 года
  5. 23 марта 2027 года
  6. 27 апреля 2027 года
Математика ОГЭ 9 класс
  1. 23 сентября 2026 года
  2. 1 декабря 2026 года
  3. 22 января 2027 года
  4. 3 марта 2027 года
  5. 14 апреля 2027 года
Физика ОГЭ 9 класс
  1. 19 октября 2026 года
  2. 10 декабря 2026 года
  3. 29 января 2027 года
  4. 17 марта 2027 года
  5. 22 апреля 2027 года
Математика ЕГЭ 10 класс
  1. 3 февраля 2027 года
  2. 11 мая 2027 года
Информатика ЕГЭ 11 класс
  1. 22 октября 2026 года
  2. 15 декабря 2026 года
  3. 26 января 2027 года
  4. 2 марта 2027 года
  5. 13 апреля 2027 года
Математика ЕГЭ 11 класс
  1. 30 сентября 2026 года
  2. 17 декабря 2026 года
  3. 9 февраля 2027 года
  4. 16 марта 2027 года
  5. 21 апреля 2027 года
Физика ЕГЭ 11 класс
  1. 14 октября 2026 года
  2. 16 декабря 2026 года
  3. 4 февраля 2027 года
  4. 12 марта 2027 года
  5. 9 апреля 2027 года