Присоединиться

11 класс·высокий уровень

Определите ID участника, занимающего в таблице первое место среди тех

Условие

Участники викторины письменно отвечают на 10 вопросов различной сложности. За правильный ответ начисляется от 1 до 5 баллов в зависимости от сложности вопроса. За неверный ответ вычитается от 1 до 5 баллов. Участник может не отвечать на какой-то вопрос, в таком случае баллы за этот вопрос не начисляются. По результатам викторины для каждого участника вычисляются три показателя:

  1. сумма — общее количество набранных баллов;

  2. плюсы — сумма баллов без учёта неверных ответов;

  3. ответы — общее количество сданных ответов (верных и неверных). В таблице результатов участники располагаются по убыванию первого показателя — суммы, при равенстве сумм - по убыванию второго показателя (плюсов), при равенстве сумм и плюсов - по убыванию третьего показателя (ответов). При равенстве всех трёх показателей участники располагаются в итоговой таблице в порядке возрастания их личных номеров. Дальнейший отбор проводится среди тех, кто набрал положительную сумму баллов, участники с нулевой и отрицательной суммой исключаются. В следующий тур проходят участники, занявшие места в первой четверти полученной таблицы (учитываются только положительные результаты), а также те, у которых все три показателя такие же, как у занявшего последнее место в первой четверти таблицы. Право участия в дополнительном отборочном туре получают 10% из тех, кто набрал положительную сумму, но не попал сразу в следующий тур, а также те, у которых все три показателя такие же, как у занявшего последнее место среди этих 10 %. Примечание. Во всех случаях, когда вычисленное количество участников оказывается не целым, учитывается целая часть полученного числа. Определите ID участника, занимающего в таблице первое место среди тех, кто прошёл в дополнительный отборочный тур, а также общее количество участников дополнительного отборочного тура. Задание 26Входные данные.

Первая строка входного файла содержит целое число N (N ≤ 10 000) — общее количество участников. Каждая из следующих N строк соответствует одному участнику и содержит 11 целых чисел, разделённых пробелами: сначала ID участника, затем — баллы, полученные им за каждый из 10 вопросов. Гарантируется, что ID участников не повторяются. В ответе запишите два целых числа: сначала требуемый ID, затем требуемое количество. Ответ:

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Приведём решение на языке Python. f = open("downloads26.txt").readlines()f = [x.replace("\n", "").split() for x in f]f = [list(map(int, x)) for x in f] round_1 = [] for i in f: summ = sum(i[1:]) id_ = i[0] x = 0 #сумма + c = 0 #кол-во ответов for elem in i[1:]: if elem > 0: x += elem if elem != 0: c +=1 if summ > 0: round_1.append((summ,x,c,id_)) round_1 = sorted(round_1, key=lambda x: [x[3]])round_1 = sorted(round_1, key=lambda x: [x[0], x[1], x[2]],reverse = True) round_2 = round_1[:len(round_1)//4] a = round_1[len(round_1)//4] for elem in round_1[len(round_1)//4:]: if elem[0] == a[0] and elem[1] == a[1] and elem[2] == a[2]: round_2.append(elem) b = round_1[1808:((len(round_1)-len(round_2))//10)+1808] final_round = b for elem in round_1[((len(round_1)-len(round_2))//10)+1808:]: if elem[0] == 12 and elem[1] == 16 and elem[2] == 8: final_round.append(elem) print(final_round[0][3],len(final_round))

Осталось ещё 1 шаг

  1. Приведём решение Юрия Красильникова на языке…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Обработка целочисленной информации»