Задача цілком технічна: усі сім олімпіад влаштовані однаково, різняться лише фільтром учасників і розміром команди.
Зведемо правила в таблицю:
IOI — без обмежень, місця;
CEOI — без обмежень, місця;
EGOI — лише дівчата (gender = \texttt{female}), місця;
EJOI — лише ті, кому не більше років (age \le 15), місця;
BaltOI — без обмежень, місць;
BalkOI — усі, крім одинадцятикласників (grade \ne 11), місця;
JBOI — усі, крім десяти- та одинадцятикласників (grade \notin \{10, 11\}), місця.
Для кожної запитаної олімпіади алгоритм однаковий:
відібрати учасників, що проходять за фільтром;
відсортувати їх за спаданням балів;
узяти перших (або всіх, якщо їх менше ніж );
вивести назву олімпіади, а потім відібраних учасників за зростанням .
Зверніть увагу на два моменти, де найлегше помилитися.
По-перше, сортування відбувається за балами, а виведення — за . Це два різні порядки, і плутати їх не можна: спочатку відбираємо найкращих за балами, потім перевпорядковуємо вже відібрану четвірку.
По-друге, умова прямо каже, що команда може бути неповною. Тому не робіть безумовного зрізу перших чотирьох — перевіряйте розмір відфільтрованого списку.
Приємна деталь: усі бали різні, тому питання про рівні результати не виникає взагалі.
Складність — \mathcal{O}(m \cdot n \log n), тобто щонайбільше сім сортувань масиву з 10^4 елементів. Можна відсортувати всіх учасників один раз на початку — тоді кожен фільтр зберігає порядок, і сортувати повторно не доведеться.