Ах, ЕГЭ по информатике – тот самый экзамен, который заставляет даже калькулятор задуматься о смысле жизни!
Сегодня мы погружаемся в загадочный мир сортировок и отборов – таких простых, что даже бабушка на даче с ними справится, но при этом достаточно хитрых, чтобы заставить мозг кипеть как чайник на плите. Представьте себе: у вас есть куча кандидатов в матросы (да-да, не на балет, а именно в морские пучины), и нужно выбрать самых достойных по сумме баллов трёх экзаменов. Казалось бы, что тут сложного?
Сложность – в деталях! Ведь если вы думаете, что можно просто взять трёх лучших и забыть про остальных – вы явно не знакомы с полупроходными баллами.
Итак, представим себе эту ситуацию как кастинг в новый сезон шоу «Танцы со звёздами», только вместо танцев у нас — оценки. У каждого кандидата есть ID (не путать с айдишником кота), три экзаменационных оценки и балл за собеседование.
Баллы складываются так же легко, как складываются обещания политиков перед выборами – быстро и с большим энтузиазмом. Но вот беда: мест всего S, а желающих попасть туда – N. Тут начинается настоящий алгоритмический танец.
Например, возьмём наших героев из условия: шесть человек претендуют на три места.
Кто-то набрал 270 очков (90+90+90), кто-то поменьше – скажем 210 или 215. Проходной балл определяет границу между счастьем и печалью: все набравшие выше этого значения проходят без вопросов. А вот те счастливчики, кто оказался чуть ниже – получают шанс побороться за оставшиеся места по дополнительным критериям: собеседованию и… ID!
Да-да, оказывается ваш номерок может сыграть решающую роль — словно в очереди за мороженым.
Как говорил мой знакомый программист: «Сортировка – это как уборка в комнате: если всё делать правильно и последовательно, то потом легче найти носки». В нашем случае сортировка нужна не просто для порядка ради порядка, а чтобы понять: кто же последний герой с проходным баллом? И сколько тех отчаянных борцов осталось с полупроходным?
Поскольку нам запрещено использовать сторонние библиотеки (потому что Python без Pandas – это как борщ без свеклы), мы прибегаем к старому доброму списку словарей.
Это похоже на то, как мама записывает рецепты борща в блокнот: название блюда (ключ) и ингредиенты (значения). Вот только у нас вместо капусты и свеклы – оценки и ID.
А теперь анекдот для поднятия настроения: приходит кандидат на собеседование и говорит комиссии: «У меня сумма баллов 215!» Комиссия смотрит на него внимательно и отвечает: «Поздравляем!
Ты попал в полупроходные!» Кандидат удивляется: «А это что за зверь такой?» Комиссия улыбается: «Это когда ты почти прошёл, но ещё надо доказать свою крутость собеседованием или своим уникальным ID». Вот такие пироги!
Вернёмся к нашему примеру из условия. Проходной балл равен 230 – значит все кандидаты с суммой 230 и выше уже в списке счастливчиков.
Осталось одно место для тех, кто набрал 215 очков. Тут вступает в игру собеседование — чем выше балл за беседу, тем больше шансов попасть на корабль мечты.
Если же собеседование не помогло расставить приоритеты (баллы равны), тогда выигрывает тот кандидат с меньшим ID — словно билетик номер один в лотерее.
Такой подход не только помогает решить задачу ЕГЭ по информатике (и почувствовать себя немного волшебником данных), но ещё отлично тренирует логику — ведь именно её зачастую забывают включать после третьей чашки кофе во время ночного кодинга.