Ctrl K

Две линии с пересадками

Сложная
Две линии метро заданы строго возрастающими массивами first и second: номера станций в порядке следования. Станция, номер которой встречается в обоих массивах, — пересадочная. Вы садитесь в начале любой из линий и едете до её конца, двигаясь только вперёд. На пересадочной станции можно перейти на другую линию и продолжить путь по ней с этой же станции. Пересаживаться можно сколько угодно раз. Ценность маршрута — сумма номеров всех станций, через которые он прошёл; пересадочная станция учитывается один раз. Найдите наибольшую возможную ценность и верните её по модулю 10⁹ + 7.
Пример 1
first=[1, 5, 6, 9], second=[2, 3, 5, 20] → 30

Начинаем по второй линии: 2 + 3 + 5, на общей станции 5 можно перейти, но выгоднее остаться: 20 больше, чем 6 + 9. Итого 2 + 3 + 5 + 20 = 30.

Пример 2
first=[4, 10, 11], second=[1, 2, 10, 30] → 44

До 10 выгоднее первая линия (4 против 1 + 2), после 10 — вторая (30 против 11): 4 + 10 + 30 = 44.

Пример 3
first=[7], second=[3, 5] → 8

Общих станций нет, поэтому едем по одной линии целиком: 3 + 5 = 8 больше 7.

Ограничения
  • 1 ≤ len(first), len(second) ≤ 10⁵
  • 1 ≤ first[i], second[i] ≤ 10⁷
  • Оба массива строго возрастают
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяНаибольшее число из двух рядов СложнаяСамый тяжёлый день чтения СложнаяЗаправки по пути СложнаяЗеркальная нарезка строки Сложная
загружаем Python…
Вход
first=[1, 5, 6, 9], second=[2, 3, 5, 20]
Ожидается
30

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