26.09 Прочие прототипы
Ошибка.
Попробуйте повторить позже
Во время сессии студенты сдают 4 экзамена, за каждый из которых можно получить от 2 до 5 баллов. Студенты, получившие хотя бы одну «двойку», считаются не сдавшими сессию. Результаты сессии публикуются в виде рейтингового списка, в котором сначала указаны идентификационные номера студентов (ID), сдавших сессию, в порядке убывания среднего балла за сессию, а в случае равенства средних баллов – в порядке возрастания ID. Затем располагаются ID студентов, не сдавших сессию: сначала – получивших одну «двойку», затем – две «двойки», потом ID студентов с тремя «двойками» и, наконец, ID студентов, получивших по 2 балла за каждый из экзаменов. Если студенты имеют одинаковое количество «двоек», то их ID в рейтинге располагаются в порядке возрастания.
Повышенную стипендию получают студенты, занявшие в рейтинговом списке первые 20% мест, при условии отсутствия у них «двоек». Гарантируется, что без «двоек» сессию сдали не менее 20% студентов.
Найдите ID первого в рейтинговом списке студента, не получившего повышенную стипендию, а также ID последнего в рейтинговом списке студента, который имеет одну «двойку».
В ответе запишите два целых положительных числа: сначала ID студента, который занимает первое место среди студентов не получивших повышенную стипендию, затем ID последнего в рейтинговом списке студента, который имеет одну «двойку».
Входные данные
В первой строке входного файла находится число , обозначающее количество студентов (целое положительное
число, не превышающее 10 000). Каждая из следующих
строк содержит 5 чисел через пробел: ID студента (целое
положительное число, не превышающее 100 000) и четыре оценки, полученные им за сессию. Гарантируется, что общее
число студентов N кратно 5 и хотя бы один студент имеет одну «двойку». Во входном файле все ID
различны.
Выходные данные
Два натуральных числа: искомые ID студентов в порядке, указанном в условии задачи.
Типовой пример организации данных во входном файле
10
4 4 4 4 4
7 5 5 5 2
10 3 4 4 5
1 4 4 4 3
6 3 5 5 3
2 2 2 2 2
13 2 2 2 3
3 3 3 3 3
5 2 4 5 3
15 2 3 3 3
При таких исходных данных рейтинговый список ID имеет вид: 4 6 10 1 3 5 7 15 13 2. Ответ: 10 15.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.
Решение с помощью электронных таблиц
Скопируем данные из файла в пустую таблицу. Разделим их по столбцам, для этого выделим столбец , перейдём
во вкладку Данные, раздел «Текст по столбцам» и разделим наши данные, указав символом-разделителем пробел.
Значение из первой строки (количество студентов) запишем в любом месте таблицы.
Озаглавим колонки, а также добавим еще 2 колонки: «Средний балл» и «Количество двоек», которые дальше пригодятся.
Заполним колонку «Средний балл», для этого в ячейку запишем формулу и растянем ее на все
строки:
=СРЗНАЧ(B2:E2)
Колонку «Количество двоек» заполним с помощью формулы и так же растянем на все строки:
=СЧЁТЕСЛИ(B2:E2;”=2”)
Дальше сформируем рейтинговый список. Для этого выделяем столбцы и нажимаем на «Сортировка и
фильтр»
«Пользовательская сортировка».
Первым параметром сортировки указываем «Количество двоек» – по возрастанию, вторым параметром «Средний балл» – по убыванию и третьим «ID» – по возрастанию. Однако, у студентов, не сдавших сессию, рейтинговый список формируется немного иначе – без учета параметра «Средний балл». Поэтому выделяем строки, содержащие студентов, не сдавших сессию, и применяем к ним фильтр снова, удалив этот параметр.
Таким образом мы сформировали рейтинговый список, остается найти в нем ответы на вопросы задачи.
Для ответа на первый вопрос – ID студента, который занимает первое место среди студентов не получивших
повышенную стипендию, нужно сначала определить количество студентов получивших повышенную стипендию:
. Тогда ID нужного студента находится в строке 1929. Первый ответ – 9429.
Для ответа на второй вопрос – ID последнего в рейтинговом списке студента, который имеет одну «двойку»
отфильтруем данные. Для этого нажимаем «Сортировка и фильтр» «Фильтр», в колонке «Количество двоек»
оставим только значение 1. В самой последней строке отфильтрованной таблицы будет значение искомого ID. Второй
ответ – 9998.
Решение с помощью программы
Идея решения заключается в том, чтобы сохранять только нужные значения о нужных категориях студентов, а затем просто отфильтровать полученные массивы, чтобы найти в них нужные значения.
f = open("26_2.txt") n = int(f.readline()) without_2 = [] # массив студентов, которые не получили двоек with_one_2 = [] # массив студентов, у которых одна двойка for i in f: id, mark1, mark2, mark3, mark4 = map(int, i.split()) # считываем данные со строки файла sr = (mark1 + mark2 + mark3 + mark4) / 4 # вычисляем средний балл if [mark1, mark2, mark3, mark4].count(2) == 0: # если двоек нет without_2.append([id, sr]) # сохраняем в массив студентов, которые не получили двоек if [mark1, mark2, mark3, mark4].count(2) == 1: with_one_2.append([id]) # сохраняем в массив студентов, у которых одна двойка # остальных студентов сохранять не обязательно, так как они в любом случае # будут ниже в рейтинге, а значит не нужны для ответов на вопросы # сортируем массивы сначала по убыванию среднего балла, а затем по ID sorted_without_2 = sorted(without_2, key=lambda x: (-x[1], x[0])) sorted_with_one_2 = sorted(with_one_2, key=lambda x: (x[0])) # вычисляем количество студентов, которые получили повышенную стипендию proc = int(n * 0.2) # выводим нужные данные print(sorted_without_2[proc][0], sorted_with_one_2[-1][0])
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!