Олимпиадный тренинг

Задача . Школьная олимпиада


Задача

Темы:

Школьная олимпиада по информатике проводилась для учеников 7-11-х классов, участвующих в общем конкурсе. Каждый участник олимпиады мог набрать от 0 до 70 баллов. Для определения призеров олимпиады, сначала отбираются 25% участников, показавших лучшие результаты. Если у последнего участника, входящего в 25%, оказывается такое же количество баллов, как и у следующих за ним в итоговой таблице, все они считаются призерами только тогда, когда набранные ими баллы больше половины максимально возможных. Иначе все они не считаются призерами.

Напишите эффективную по времени работы и по используемой памяти программу, которая по результатам олимпиады будет определять минимальный балл призера олимпиады, и количество призеров в каждой параллели (среди 7-х, 8-х, 9-х, 10-х и 11-х классов отдельно). Гарантируется, что, хотя бы одного призера по указанным правилам, определить можно.

На вход программе сначала подается число участников олимпиады N. В каждой из следующих N строк находится результат одного из участников олимпиады в следующем формате:

<Фамилия> <Имя> <класс> <баллы>,

где <Фамилия> – строка, состоящая не более, чем из 30 символов;
- <Имя> – строка, состоящая не более, чем из 15 символов;
- <класс> – число от 7 до 11;
- <баллы> – целое число от 0 до 70 набранных участником баллов.
<Фамилия> и <Имя>, <Имя> и <класс>, а также <класс> и <баллы> разделены одним пробелом.


Пример входной строки:
Семенов Сидор 11 66
Программа должна выводить в первой строке минимальный балл призера, а в следующей – число призеров по всем параллелям отдельно. 

Пример выходных данных:
63 
1 5 8 12 22

time 1000 ms
memory 32 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя