Порог прогноза задержки посылок
Условие
Пункт выдачи анализирует прогнозы задержки посылок. В первой таблице указано, была ли каждая посылка выдана с задержкой. Во второй таблице находятся результаты модели, но для части посылок прогноз мог не сохраниться.
Строки двух таблиц сопоставляются по идентификатору посылки parcel_id. В расчёт включаются только посылки, присутствующие в обеих таблицах. Значение actual_delay = 1 означает, что задержка была, а actual_delay = 0 означает отсутствие задержки.
Для каждого заданного порога t модель считает посылку задержанной, если delay_score >= t. Для этого порога вычисляется F1-мера: F1 = 2 * TP / (2 * TP + FP + FN), где TP — число верно найденных задержек, FP — число ошибочно предсказанных задержек, FN — число пропущенных задержек. Если знаменатель формулы равен нулю, значение F1 считается равным 0. Требуется вывести порог с наибольшим значением F1.
Если наибольшее значение F1 достигается при нескольких порогах, выводится наименьший из них. Ответ выводится целым числом, без округления.
Формат ввода
В первой строке даны три целых числа n, m и k — число строк в таблице фактических данных, число строк в таблице прогнозов и число проверяемых порогов.
В следующих n строках находится первая таблица. Каждая строка содержит идентификатор посылки parcel_id и целое число actual_delay.
В следующих m строках находится вторая таблица. Каждая строка содержит идентификатор посылки parcel_id и целое число delay_score.
В последней строке записаны k целых чисел — проверяемые пороги.
Формат вывода
Выведите один целый порог, при котором F1-мера максимальна.
Ограничения
1 <= n <= 2000.
1 <= m <= n.
1 <= k <= 101.
n + m + k <= 4000.
Идентификатор parcel_id состоит из латинских букв, цифр и символа _, его длина от 1 до 20 символов.
Идентификаторы в первой таблице не повторяются. Идентификаторы во второй таблице не повторяются и все встречаются в первой таблице.
actual_delay равен 0 или 1.
0 <= delay_score <= 100.
0 <= t <= 100 для каждого проверяемого порога. Все проверяемые пороги различны.
Гарантируется, что в обеих таблицах есть хотя бы одна общая посылка.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели