Тема 26. Обработка целочисленной информации с использованием сортировки

26.09 Прочие прототипы

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации с использованием сортировки
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#63613

N абитуриентов поступают на некое направление на М мест. Абитуриенты сдали ЕГЭ по трем экзаменам: русскому языку, профильной математике, физики и/или информатике. В зачет идет 3 экзамена. Если сданы и физика, и информатика, то в зачет идёт максимальный балл из двух предметов. Часть выпускников еще не подала оригиналы документов, что отмечено в исходных данных первым полем (0 либо 1). Необходимо определить гарантированно проходной балл.

Входные данные: в первой строке N – кол-во выпускников, M – кол-во мест на направление и далее N строк для каждого абитуриента, в которых первое число 0/1 (отсутствие/наличие оригиналов документов) и далее 3 или 4 оценки: баллы по русскому, профилю, физике и/или информатике.

Выходные данные: проходной балл с учетом наличия оригиналов документов (на момент запроса); проходной балл без учета наличия оригиналов документов (верхняя оценка). Числа в ответе запишите через пробел.

Вложения к задаче
Показать ответ и решение
f = open(’С:/26_14.txt’)
# n — кол-во абитуриентов, m — кол-во мест на направлении
n,m=map(int, f.readline().split())

# Список с данными об общем балле и наличии оригиналов у каждого абитуриента
a=[]
for i in range(n):
    p,r,ma,*fi=map(int,f.readline().split())
    a.append((r+ma+max(fi),p))
a.sort(reverse=True)
orig = [] # Список абитуриентов с учётом наличия оригиналов
bez = [] # Список без учёта наличия оригиналов

for i in range(len(a)):
    bez.append(a[i][0])
    # Если оригиналы есть, то добавляем в соответствующий список
    if a[i][1] == 1:
        orig.append(a[i][0])
orig.sort(reverse=True)
bez.sort(reverse=True)

# Те же списки, но в них добавляем с учётом ограничения по местам
a1 = []
a2 = []
for i in range(m):
    a2.append(bez[i])
    if i < len(orig):
        a1.append(orig[i])
    else:
        a1.append(bez[len(orig) - i])
print(min(a1), min(a2))

Ответ: 176 231

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!