Ctrl K

Отскакивающие роботы

Средняя
На бесконечной прямой стоят роботы, positions[i] — начальная координата i-го робота (все координаты различны). Строка directions задаёт, куда каждый поедет по команде: L — в сторону уменьшения координаты, R — в сторону увеличения. Все роботы едут со скоростью одна единица в секунду. Если два робота оказываются в одной точке, они мгновенно разворачиваются и едут дальше в противоположные стороны. Встреча может случиться и посреди единичного отрезка: роботы в точках 0 и 1, едущие навстречу, через полсекунды отскакивают друг от друга и ещё через полсекунды снова стоят в 0 и 1. Верните сумму расстояний между всеми парами роботов через seconds секунд после команды. Каждая пара считается один раз. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
positions=[0, 5], directions="RL", seconds=1 → 3

Через секунду роботы стоят в точках 1 и 4, расстояние между ними 3.

Пример 2
positions=[-1, 1, 4], directions="RLR", seconds=2 → 14

Через секунду первые два робота встречаются в точке 0 и разворачиваются, ещё через секунду они в точках -1 и 1. Третий робот в точке 6. Сумма попарных расстояний: 2 + 7 + 5 = 14.

Ограничения
  • 2 ≤ len(positions) ≤ 10⁵
  • -2·10⁹ ≤ positions[i] ≤ 2·10⁹, все значения различны
  • len(directions) = len(positions), строка состоит из L и R
  • 0 ≤ seconds ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяХватит ли мест в шаттле СредняяРасстановка под популярные отрезки СредняяK-й по величине XOR угла СредняяПодравнять числа прибавлением Средняя
загружаем Python…
Вход
positions=[0, 5], directions="RL", seconds=1
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 102 теста на сервере, включая скрытые.