В интервью был задан вопрос:
В вызове Формулы-1 есть n команд с номерами от 1 до n. В каждой команде есть автомобиль и водитель. Технические характеристики автомобиля следующие:
- Максимальная скорость: (150 + 10 * i) км в час
- Ускорение: (2 * i) метр в секунду квадрата.
- Коэффициент обработки (hf) = 0,8
- Nitro: увеличивает скорость до двойной или максимальной скорости, в зависимости от того, что меньше. Может использоваться только один раз.
Здесь я - номер команды. Автомобили выстраиваются в линию для гонки. Стартовая линия для (i + 1) -го автомобиля - 200 * я метров за i-м автомобилем.
Все они начинаются в одно и то же время и пытаются достичь максимальной скорости. Повторная оценка позиций выполняется каждые 2 секунды (поэтому, даже если автомобиль пересек финишную черту между ними, вы узнаете через 2 секунды). Во время этой оценки каждый водитель проверяет, есть ли автомобиль в радиусе 10 метров от его автомобиля, его скорость сводится к: hf * (скорость в этот момент). Кроме того, если водитель замечает, что он последний в гонке, он использует "нитро".
Принимая количество команд и длину трека в качестве входных данных, вычисляем конечные скорости и соответствующие времена завершения.
Я не понимаю, как подойти к таким проблемам. Для каждого экземпляра я должен проверить все комбинации C (n, 2) каждой пары драйверов и вычислить результат? Но как я могу выяснить, в каком экземпляре я должен делать вычисления?