Задание 26 · ЕГЭ, информатика 2027
Обработка с сортировкой
Сортировка — не деталь решения, а сам метод.
Пять вариантов задания
Данные в вариантах разные, приём решения один. Отмеченные галочкой уже решены — отметка хранится в этом браузере.
26.txt — переименуйте или поправьте строку с open(...).Прочитать файл правильно
Первая строка устроена иначе, чем остальные: в ней два числа через пробел. Читаем её отдельно черезf.readline().split(), а уже потом — остальные строки.Понять, зачем сортировка
Чтобы принять как можно больше заявок, начинать надо с самых маленьких: одна большая заявка занимает место нескольких маленьких. Поэтому список сортируется по возрастанию — отсюда и название темы.Набирать, пока помещается
Идём по отсортированному списку и копим сумму. Как только очередная заявка не помещается, останавливаемся: все следующие только больше, и они тоже не поместятся.Ответ
Принято 2944 заявок, суммарно на 519 793 при вместимости 520 000; самая большая из принятых — 302. Ответ: 2944 302.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
f = open('26.txt')
n, s = map(int, f.readline().split()) # первая строка — N и S
a = [int(line) for line in f]
a.sort() # принимаем с самых маленьких — их поместится больше
total = 0
count = 0
last = 0
for x in a:
if total + x <= s:
total += x
count += 1
last = x # заявки отсортированы, значит эта — самая большая
else:
break # дальше заявки только крупнее
print(count, last)Где обычно теряют балл
- Не отсортировать список и принимать заявки в порядке файла — поместится меньше.
- Прочитать первую строку как обычную заявку: количество и вместимость попадут в данные.
- Продолжать перебор после первой неподошедшей заявки: список отсортирован, дальше искать нечего.
26.txt — переименуйте или поправьте строку с open(...).Прочитать файл правильно
Первая строка устроена иначе, чем остальные: в ней два числа через пробел. Читаем её отдельно черезf.readline().split(), а уже потом — остальные строки.Понять, зачем сортировка
Чтобы принять как можно больше заявок, начинать надо с самых маленьких: одна большая заявка занимает место нескольких маленьких. Поэтому список сортируется по возрастанию — отсюда и название темы.Набирать, пока помещается
Идём по отсортированному списку и копим сумму. Как только очередная заявка не помещается, останавливаемся: все следующие только больше, и они тоже не поместятся.Ответ
Принято 3359 заявок, суммарно на 639 981 при вместимости 640 000; самая большая из принятых — 331. Ответ: 3359 331.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
f = open('26.txt')
n, s = map(int, f.readline().split()) # первая строка — N и S
a = [int(line) for line in f]
a.sort() # принимаем с самых маленьких — их поместится больше
total = 0
count = 0
last = 0
for x in a:
if total + x <= s:
total += x
count += 1
last = x # заявки отсортированы, значит эта — самая большая
else:
break # дальше заявки только крупнее
print(count, last)Где обычно теряют балл
- Не отсортировать список и принимать заявки в порядке файла — поместится меньше.
- Прочитать первую строку как обычную заявку: количество и вместимость попадут в данные.
- Продолжать перебор после первой неподошедшей заявки: список отсортирован, дальше искать нечего.
26.txt — переименуйте или поправьте строку с open(...).Прочитать файл правильно
Первая строка устроена иначе, чем остальные: в ней два числа через пробел. Читаем её отдельно черезf.readline().split(), а уже потом — остальные строки.Понять, зачем сортировка
Чтобы принять как можно больше заявок, начинать надо с самых маленьких: одна большая заявка занимает место нескольких маленьких. Поэтому список сортируется по возрастанию — отсюда и название темы.Набирать, пока помещается
Идём по отсортированному списку и копим сумму. Как только очередная заявка не помещается, останавливаемся: все следующие только больше, и они тоже не поместятся.Ответ
Принято 3507 заявок, суммарно на 699 911 при вместимости 700 000; самая большая из принятых — 349. Ответ: 3507 349.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
f = open('26.txt')
n, s = map(int, f.readline().split()) # первая строка — N и S
a = [int(line) for line in f]
a.sort() # принимаем с самых маленьких — их поместится больше
total = 0
count = 0
last = 0
for x in a:
if total + x <= s:
total += x
count += 1
last = x # заявки отсортированы, значит эта — самая большая
else:
break # дальше заявки только крупнее
print(count, last)Где обычно теряют балл
- Не отсортировать список и принимать заявки в порядке файла — поместится меньше.
- Прочитать первую строку как обычную заявку: количество и вместимость попадут в данные.
- Продолжать перебор после первой неподошедшей заявки: список отсортирован, дальше искать нечего.
26.txt — переименуйте или поправьте строку с open(...).Прочитать файл правильно
Первая строка устроена иначе, чем остальные: в ней два числа через пробел. Читаем её отдельно черезf.readline().split(), а уже потом — остальные строки.Понять, зачем сортировка
Чтобы принять как можно больше заявок, начинать надо с самых маленьких: одна большая заявка занимает место нескольких маленьких. Поэтому список сортируется по возрастанию — отсюда и название темы.Набирать, пока помещается
Идём по отсортированному списку и копим сумму. Как только очередная заявка не помещается, останавливаемся: все следующие только больше, и они тоже не поместятся.Ответ
Принято 3834 заявок, суммарно на 814 881 при вместимости 815 000; самая большая из принятых — 371. Ответ: 3834 371.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
f = open('26.txt')
n, s = map(int, f.readline().split()) # первая строка — N и S
a = [int(line) for line in f]
a.sort() # принимаем с самых маленьких — их поместится больше
total = 0
count = 0
last = 0
for x in a:
if total + x <= s:
total += x
count += 1
last = x # заявки отсортированы, значит эта — самая большая
else:
break # дальше заявки только крупнее
print(count, last)Где обычно теряют балл
- Не отсортировать список и принимать заявки в порядке файла — поместится меньше.
- Прочитать первую строку как обычную заявку: количество и вместимость попадут в данные.
- Продолжать перебор после первой неподошедшей заявки: список отсортирован, дальше искать нечего.
26.txt — переименуйте или поправьте строку с open(...).Прочитать файл правильно
Первая строка устроена иначе, чем остальные: в ней два числа через пробел. Читаем её отдельно черезf.readline().split(), а уже потом — остальные строки.Понять, зачем сортировка
Чтобы принять как можно больше заявок, начинать надо с самых маленьких: одна большая заявка занимает место нескольких маленьких. Поэтому список сортируется по возрастанию — отсюда и название темы.Набирать, пока помещается
Идём по отсортированному списку и копим сумму. Как только очередная заявка не помещается, останавливаемся: все следующие только больше, и они тоже не поместятся.Ответ
Принято 4036 заявок, суммарно на 899 763 при вместимости 900 000; самая большая из принятых — 392. Ответ: 4036 392.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
f = open('26.txt')
n, s = map(int, f.readline().split()) # первая строка — N и S
a = [int(line) for line in f]
a.sort() # принимаем с самых маленьких — их поместится больше
total = 0
count = 0
last = 0
for x in a:
if total + x <= s:
total += x
count += 1
last = x # заявки отсортированы, значит эта — самая большая
else:
break # дальше заявки только крупнее
print(count, last)Где обычно теряют балл
- Не отсортировать список и принимать заявки в порядке файла — поместится меньше.
- Прочитать первую строку как обычную заявку: количество и вместимость попадут в данные.
- Продолжать перебор после первой неподошедшей заявки: список отсортирован, дальше искать нечего.
Обработка данных с сортировкой
Тема номера прямо названа в спецификации: сортировка. Она и есть ключ. Чтобы принять как можно больше заявок, начинать надо с самых маленьких — одна крупная занимает место нескольких мелких.
Порядок действий:
- прочитать первую строку отдельно — в ней параметры, а не данные;
- прочитать остальные строки в список;
- отсортировать;
- идти по списку, копя сумму, и остановиться на первой заявке, которая не помещается: все следующие только больше.
Ответ этого номера — два числа.
Где теряют балл. Не сортируют; читают первую строку как обычную заявку; продолжают перебор после первой неподошедшей.
Где эта тема разобрана подробно
Структура раздела и темы заданий соответствуют кодификатору и спецификации ФИПИ. Задания и файлы данных составлены редакцией reknow.ru. План варианта приведён по проекту спецификации и демоверсии ФИПИ 2027 года. После публикации утверждённой версии информация будет обновлена.