Задание 26. Алгоритмы сортировки. Обработка целочисленной информации.. ЕГЭ 2026 по информатике

За это задание ты можешь получить 2 балла. На решение дается около 30 минут. Уровень сложности: высокий.
Средний процент выполнения: 48.6%
Ответом к заданию 26 по информатике может быть развернутый ответ (полная запись решения с обоснованием выполненных действий).

Задачи для практики

Задача 1

Предприятие производит детали A и B, на их производство выделена конкретная сумма денег. Вам предоставлен полный перечень, какие детали можно изготовить. Каждую деталь из перечня моно сделать только 1 раз. При изготовлении необходимо руководствоваться следующими правилами:

  1. Нужно изготовить максимальное количество деталей.
  2. При одинаковом максимальном количестве деталей, нужно постараться изготовить больше деталей B при наименьшей стоимости.

Определите, сколько всего будет изготовлено деталей B и какая сумма останется неиспользованной. В ответе запишите эти два числа через пробел, сначала количество изготовленных деталей, потом пробел, потом оставшуюся сумму.

В первой строке файла указано количество деталей, которые можно изготовить и общая сумма денег, которую можно потратить

В остальных строчках указана стоимость детали и её вид

Решение

Для решения этого номера напишем код:

f = open('26.txt', 'r')
n, s = map(int, f.readline().strip().split(' '))
detail = {'A': [], 'B': []}
for line in f:
    v, k = line.strip().split()
    detail[k].append(int(v))
detail['B'].sort()
detail['A'].sort()
sum_all = 0
cur = ''
last = 0
new = {'A': [], 'B': []}
while sum(new['B']) + sum(new['A']) <= s:
    if detail['B'][0] <= detail['A'][0]:
        new['B'].append(detail['B'].pop(0))
        cur = 'B'
    else:
        new['A'].append(detail['A'].pop(0))
        cur = 'A'
detail[cur].insert(0, last)
new[cur].pop()
while sum(new['B']) + detail['B'][0] + sum(new['A']) - new['A'][-1] <= s:
    new['B'].append(detail['B'].pop(0))
    new['A'].pop()
print(len(new['B']), s - sum(new['B']) - sum(new['A']))
Ответ: 154 87
Показать решение
Бесплатный интенсив

Задача 2

В городе расположены постаматы из K ячеек. Ячейки постамата пронумерованы, начиная с 1. Курьеры складывают товар в ячейки постамата. Товар кладётся в свободную ячейку с минимальным номером. Известно время размещения товара в ячейку и время освобождения ячейки (в минутах от начала суток). Товар достаётся из ячейки в течение минуты. Начиная со следующей минуты, в ячейку можно положить другой товар. Если все ячейки заняты, то товар убирается в другой постамат.

Определите количество товаров, которое можно загрузить в первый постамат за 24 часа и номер последней использованной ячейки, в которую положили товар.

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

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

В каждой из последующих М строк содержится два числа - количество минут с начала суток, предположительное время занятия ячейки и количество минут - предположительное время, когда товар заберёт покупатель.

В ответе укажите 2 числа слитно (без пробелов и других разделителей)

Решение
f = open('26_1.txt', 'r')
n, k = map(int, f.readline().split())
packages = [[int(l) for l in x.split()] for x in f]
packages.sort()
print(packages)
cell = [0] * n
print(cell)
number = 0
count = 0
for p in packages:
    for i in range(n):
        if cell[i] < p[0]:
            count += 1
            cell[i] = p[1]
            number = i + 1
            break
print(cell)
print(count, number)
Ответ: 41498
Показать решение
Бесплатный интенсив

Задача 3

На складе посылки складывают параллельными рядами, которые пронумерованы идущими подряд натуральными числами. Посылки в каждом ряду пронумерованы натуральными числами начиная с единицы.

Все посылки расставляют специальные роботы, которые все данные хранят в общей базе. Известно, в каких рядах и на каких местах посылки забрали в доставку. Найдите ряд с наибольшим номером, в котором есть ровно 7 идущих подряд свободных мест для новых посылок таких, что непосредственно слева и справа от них в том же ряду посылка лежит. Гарантируется, что есть хотя бы один ряд, удовлетворяющий этому условию. В ответе запишите два целых числа: наибольший номер ряда и наименьший номер места для размещения посылки из числа найденных в этом ряду подходящих последовательностей из 7 свободных мест.

В ответе укажите два числа без пробелов. Например, если вы получили 46 и 72, то ответ будет 4672

Решение
f = open('26.txt', 'r')
n = int(f.readline().strip())
forest = [[int(t) for t in x.split()] for x in f]
forest.sort()
max_row = float('-inf')
min_pos = float('inf')
for i in range(n - 1):
    if forest[i][0] == forest[i + 1][0]:
        if forest[i + 1][1] - forest[i][1] == 8:
            if max_row < forest[i][0]:
                max_row = forest[i][0]
                min_pos = forest[i][1] + 1
print(max_row, min_pos)
Ответ: 5658867065
Показать решение
Бесплатный интенсив

Задача 4

На склад завезли обручи разного диаметра. Рабочие решили собрать как можно больше обручей в одной месте, для этого они стали помещать один обруч внутрь другого. Один обруч можно поместить в другую, если его диаметр хотя бы на 3 единицы меньше диаметра стороны другого обруча. Определите наибольшее количество обручей, которые можно уложить в одном месте, и максимально возможный диаметр самого маленького обруча, который можно положить последним.

Входные данные представлены в файле следующим образом. В первой строке входного файла записано число N – количество обручей на складе (натуральное число, не превышающее 10 000). В каждой из следующих N строк находится число, равное диаметру обруча (натуральное число, не превышающее 10 000).

Запишите в ответе два целых числа через пробел: сначала наибольшее количество обручей, которые можно поместить в одном месте, затем максимально возможный диаметр самого маленького обруча, который положили последним.

Пример входного файла:
5
43
40
32
40
30 

При таких исходных данных условию задачи удовлетворяют наборы коробок с длинами сторон 30, 40 и 43 или 32, 40 и 43 соответственно. В обоих случаях количество коробок равно 3, а длина стороны самой маленькой коробки равна 32. Ответ: 3 32.

Решение
f = open('26.txt', 'r')
n = int(f.readline())
rounds = [int(x) for x in f]
rounds.sort(reverse=True)
curr = rounds[0]
count = 1
for i in range(n):
    if curr - 3 >= rounds[i]:
        curr = rounds[i]
        count += 1
print(count, curr)
Ответ: 2178 52
Показать решение
Бесплатный интенсив

Задача 5

В магазине решили провести акцию «каждый третий товар бесплатно». Дядя Миша решил хорошенько сэкономить и разделил товары на группы по три товара, собираясь заплатить за каждую группу отдельным чеком. Дядя Миша разместил товары таким образом, что каждый третий товар был самым дорогим. Но к великому разочарованию Дяди Миши выяснилось, что при на кассе не учитывается расположение товара на ленте и итоговая цена товаров в чеке формируется таким образом, что стоимость покупки максимальная.

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

В первой строке входного файла находится число N — количество товаров, которые планирует приобрести покупатель (натуральное число, не превышающее 10 000). В следующих N строках находятся цены товаров, которые выбрал покупатель (все числа натуральные, не превышающие 10 000, каждое — в отдельной строке).

Цены товаров указаны в произвольном порядке.

Найдите минимальную цену, которую планировал заплатить покупатель изначально, если бы бесплатным был 3-й товар в любой покупке, состоящей из З предметов. А затем цену, которую он заплатил. Покупатель делит товары на группы наиболее выгодным для себя способом.

Запишите в ответе разность между суммой, которую заплатил, и суммой, которую планировал заплатить покупатель.

Типовой пример организации во входном файле:

4
80
30
50
40

При таких исходных данных, если каждый третий товар бесплатно, предполагаемая и действительная суммы равны 120 и 160. В ответе нужно указать 40 (160 - 120)

Решение

Решение на языке Python

f = open('26_new.txt')
n = int(f.readline())
a = []
for i in range(n):
    a.append(int(f.readline()))
a.sort(reverse = True)
sum_min = sum(a[n // 3:])
a.sort()
sum_max = sum(a[n // 3:])
print(sum_max-sum_min)

Ответ: 21957374

Ответ:
Показать решение
Бесплатный интенсив

Задача 6

В городе расположены постаматы из K ячеек. Ячейки постамата пронумерованы, начиная с 1. Курьеры складывают товар в ячейки постамата. Товар кладётся в свободную ячейку с минимальным номером. Известно время размещения товара в ячейку и время освобождения ячейки (в минутах от начала суток). Товар достаётся из ячейки в течение минуты. Начиная со следующей минуты, в ячейку можно положить другой товар. Если все ячейки текущего постамата заняты, то товар убирается в следующий постамат и так, пока весь товар не будет загружен.

Определите количество товаров, которое можно загрузить в первый постамат за 24 часа и минимальное количество постаматов, которые нужно использовать.

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

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

В каждой из последующих М строк содержится два числа - количество минут с начала суток, предположительное время занятия ячейки и количество минут - предположительное время, когда товар заберёт покупатель.

В ответе укажите 2 числа слитно (без пробелов и других разделителей)

Решение
f = open('26_1.txt', 'r')
n, k = map(int, f.readline().split())
packages = [[int(l) for l in x.split()] for x in f]
packages.sort()
cell = [[0] * n for i in range(k // n)]
number = 0
count = 0
max_post = 0
for p in packages:
    start = True
    for post in range(k // n):
        for i in range(n):
            if cell[post][i] < p[0]:
                if post == 0:
                    count += 1
                cell[post][i] = p[1]
                number = i + 1
                start = False
                max_post = max(max_post, post + 1)
                break
        if not start:
            break
print(count, max_post)
Ответ: 41419
Показать решение
Бесплатный интенсив

Задача 7

По результатам прошедшей олимпиады Google Code Jam участников награждают дипломами I, II и III степени. Если несколько участников набрали одинаковое количество баллов, они получают дипломы одинаковой степени. Призёром олимпиады считается участник, получивший диплом не хуже III степени. Определите количество призёров по результатам олимпиады.

Входные данные: в первой строке вводится число N (натуральное, не превышает 10000) - количество участников олимпиады, в каждой из следующих N строк записано одно число (Натуральное, не превышает 100) - количество баллов, набранных участником.

Выходные данные: одно число - количество призёров олимпиады.

Пример входных данных:

5

95

50

60

95

90

Пример выходных данных:

4

Решение

Копируем всё из txt в Excel.

Удаляем первую строчку.

Сортируем то, что осталось, по убыванию.

Видим, что лучший результат - сотка.

Второй лучший результат - 99.

Третий лучший результат - 98.

Смотрим, сколько людей набрали 100, 99 и 98 баллов.

Это и есть кол-во призеров.

Ответ:
Показать решение
Бесплатный интенсив

Задача 8

В Высшей Школе Экологии на факультете Экологии K бюджетных мест. N абитуриентов подали документы на этот факультет. Определить проходной балл на факультете. Проходной балл - количество баллов у последнего прошедшего абитуриента.

Входные данные: в первой строке вводятся два числа. Число N (натуральное, не превышает 1000) - количество абитурентов, подавших документы. Число K (натуральное, не превышает N) - количество бюджетных мест. В каждой из следующих N строк записано одно число (Натуральное, не превышает 310) - баллы абитурента за экзамены.

Выходные данные: одно число - проходной балл на факультете.

Пример входных данных:

5 3

300

290

170

240

275

Пример выходных данных:

275

Решение

Копируем данные из txt в Excel.

Запоминаем первую строчку и удаляем ее.

Сортируем то, что осталось, по убыванию и ищем балл 471-го студента.

Почему именно 471? Потому что именно столько бюджетных мест.

Ответ:
Показать решение
Бесплатный интенсив

Задача 9

Грузчик Лёха закидывает мешки со строительным мусором в Газель. Мусора целая стройка, а Газель маленькая. Лёха хочет узнать, какое наибольшее количество мешков с мусором можно впихнуть в Газель, а также наибольший вес мешка, который можно погрузить в Газель при условии, что запихнули наибольшее количество мешков.

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

В первой строке входного файла находятся два числа: X - грузоподъёмность Газели в килограммах (натуральное число, не превышает 3000) и N - количество мешков с мусором (натуральное число, не превышает 1000). В следующих N строках находятся значения вес каждого мешка в килограммах (натуральные числа, не превышают 100), каждое в отдельной строке.

В качестве ответа укажите два числа через пробел: наибольшее количество мешков и вес наибольшего мешка в Газели.

Пример входного файла:

100 4

70

50

20

40

Пример выходных данных:

2 70

Решение

Копируем все из txt в Excel.

Запоминаем первую строчку и удаляем ее .

Сортируем по возрастанию то, что осталось.

В столбце В суммируем все строки по порядку с помощью формул В1 =A1 и В2 =A2+B1.

Последнюю формулу растягиваем до самого низа.

Теперь нужно найти, на какой последней строке сумма еще удовлетворяет условию <=2848. Номер этой строки и есть ответ на первый вопрос (сколько мешков влезет)

Отвечаем на второй вопрос:

Смотрим сколько весят все мешки, которые влезли в грузовик в первом вопросе.

Видим, что оказывается еще осталось свободное место.

Рассчитываем сколько свободного места и думаем, а что, если заменить самый последний влезший мешок на более тяжелый? Ведь есть еще свободное место!

При такой замене кол-во мешков не поменяется, а самый последний самый тяжелый мешок может стать еще тяжелее.

Ищем, какой самый тяжелый мешок может влезть вместо последнего мешка и оставшегося свободного места.

Ответ: 228 39
Показать решение
Бесплатный интенсив
Показать еще
  • Без воды
  • Ламповая атмосфера
  • Крутые преподаватели

ЕГЭ 2026: бесплатный курс
по информатике

На бесплатном демо-курсе ты:
  • Узнаешь всё про кодирование: что это такое и как происходит
  • Познакомишься с Условием Фано: как оно примняется и почему важно
  • Научишься считать колиечтсво информации и сколько под неё нужно выделить памяти
Получи бесплатный демо-доступ
Оставь заявку и займи место
на бесплатном курсе Турбо ЕГЭ
Нажимая на кнопку «Отправить», вы принимаете положение об обработке персональных данных.