Задача №1240. Двухтуровая олимпиада
Разбор добавил Михаил Пядеркин
Очевидно, что нет никакого толку прибавлять всем участникам баллы. Научимся теперь определять, может ли i-ый участник выиграть. Теперь пусть мы будем умножать результаты первого тура на \(k_1\), а результаты второго тура - на \(k_2\). \(k_1\ne k_2\) (иначе нет смысла умножать). Разделим результаты обоих туров на \(\min(k_1,k_2)\) (от этого победившие не изменились). Одно из чисел стало равно 1. Получаем, что нужно умножать только один тур. Переберем этот тур (1 или 2). Теперь будем его обозначать первым, другой тур - вторым; a[t][j] - результат участника j в туре t. Осталось найти коэффициент, чтобы i-ый выиграл, обозначим его \(k\). Идем по всем \(j\ne i\). Если a[1][j]<a[1][i], то \(k\ge (a[2][j]-a[2][i])/(a[1][i]-a[1][j])\), иначе \(k\le (a[2][j]-a[2][i])/(a[1][i]-a[1][j])\). Получилось две границы \(k_{min}\) (\(k_{min}\) по условию еще и \(\gt 1\)) и \(k_{max}\), нужно проверить, что \(k_{min}\le k_{max}\). После этого берем \(k_{min}\) в качестве коэффициента (именно его, чтобы удовлетворять условию про 100 баллов если это вообще возможно). Теперь проверяем, что никто не набрал более 100 баллов, и то, что мы (i-ый) набрали максимум баллов.Сдать: для сдачи задач необходимо войти в систему
statement