Пробный урок
📘 ЕГЭ по информатике 2027 · задание 26 из 27

Задание 26 ЕГЭ по информатике: Обработка целочисленной информации с использованием сортировки

Что проверяет задание 26, сколько баллов оно приносит и сколько времени на него закладывать — и 3 примера в формате ФИПИ с подробным решением и ответом.

Уровень
высокий
Максимум
2 балла
Время
~35 минут
Компьютер
нужен (специальное ПО)

Примеры задания 26 с решениями

Сначала попробуйте решить сами, затем откройте решение и сверьте ответ

Пример 1

В магазине продаётся N товаров, известна цена каждого. У покупателя есть S рублей. Он хочет купить как можно больше товаров, а среди всех способов купить максимальное количество — такой, при котором самый дорогой купленный товар стоит как можно больше. В первой строке файла — числа S и N, в следующих N строках — цены товаров. Запишите в ответе максимальное количество товаров и цену самого дорогого товара при таком выборе.
Показать решение
1. Чтобы купить как можно больше, берём самые дешёвые товары — сортируем цены по возрастанию и берём с начала, пока хватает денег. 2. Количество уже не изменится, но самый дорогой из взятых можно заменить на более дорогой, если хватит денег. 3. Убираем последний взятый товар и ищем самый дорогой из оставшихся, который помещается в бюджет.
f = open('26.txt')                                 # файл: в первой строке S и N, дальше N цен
S, N = map(int, f.readline().split())             # бюджет и количество товаров
a = sorted(int(f.readline()) for _ in range(N))   # цены по возрастанию
cnt, total = 0, 0                                  # сколько купили и сколько потратили
while cnt < N and total + a[cnt] <= S:             # берём самые дешёвые, пока хватает денег
    total += a[cnt]                                # платим за товар
    cnt += 1                                       # ещё один товар куплен
rest = S - (total - a[cnt - 1])                    # деньги, если не покупать последний (самый дорогой из взятых)
top = max(x for x in a[cnt - 1:] if x <= rest)     # самый дорогой из оставшихся, который помещается в бюджет
print(cnt, top)                                    # количество и цена самого дорогого товара
Ответ зависит от файла с экзамена, поэтому готовых чисел здесь нет.

Пример 2

В олимпиаде участвовали N школьников, известны их баллы. Призёрами становятся 25% участников с наибольшими баллами (количество округляется вниз). Если у последнего призёра столько же баллов, сколько у следующих за ним участников, они тоже становятся призёрами. В первой строке файла — число N, в следующих N строках — баллы. Запишите в ответе количество призёров и минимальный балл призёра.
Показать решение
1. Сортируем баллы по убыванию, берём k = N // 4 лучших — порог равен баллу k-го участника. 2. Все, у кого балл не ниже порога, — призёры (так учитываются одинаковые баллы).
f = open('26.txt')                                # файл: N, затем N баллов
n = int(f.readline())                             # количество участников
a = sorted((int(f.readline()) for _ in range(n)), reverse=True)   # баллы по убыванию
k = n // 4                                        # 25% участников, округление вниз
low = a[k - 1]                                    # балл последнего из «основных» призёров
count = sum(1 for x in a if x >= low)             # призёры — все с баллом не ниже порога
print(count, low)                                 # количество призёров и минимальный балл
Ответ зависит от файла с экзамена.

Пример 3

На складе N коробок, известен размер каждой. Коробку можно вложить в другую, если её размер хотя бы на 3 единицы меньше. Из коробок собирают одну вложенную цепочку так: берут самую большую коробку, затем каждый раз — самую большую из тех, что помещаются в последнюю взятую. В первой строке файла — число N, в следующих N строках — размеры коробок. Запишите в ответе количество коробок в цепочке и размер самой маленькой из них.
Показать решение
1. Сортируем размеры по убыванию и идём по списку: коробку берём, если она хотя бы на 3 меньше последней взятой. Так мы всегда выбираем самую большую подходящую.
f = open('26.txt')                                 # файл: N, затем N размеров
n = int(f.readline())                              # количество коробок
a = sorted((int(f.readline()) for _ in range(n)), reverse=True)   # размеры по убыванию
chain = [a[0]]                                     # начинаем с самой большой коробки
for x in a[1:]:                                    # остальные — от больших к меньшим
    if chain[-1] - x >= 3:                         # помещается в последнюю взятую
        chain.append(x)                            # вкладываем
print(len(chain), chain[-1])                       # количество и самая маленькая коробка
Ответ зависит от файла с экзамена.

Не получается задание 26? Разберём на пробном уроке

Бесплатно покажем, как решать задание 26 и похожие, определим пробелы и составим план подготовки к ЕГЭ.

Записаться бесплатно

Все задания ЕГЭ по информатике

Структура экзамена, баллы и темы — на странице программы ЕГЭ по информатике