Ctrl K

Ровный рост: лучшая выборка дней

Средняя
Дан массив prices: prices[i] — цена акции в день i (дни нумеруются с нуля). Выберите несколько дней (хотя бы один) так, чтобы между любыми двумя соседними выбранными днями цена росла ровно на столько, сколько дней прошло. Иначе говоря, для выбранных дней i < j, идущих подряд в выборке, должно выполняться prices[j] - prices[i] == j - i. Очки выборки — сумма цен в выбранные дни. Верните наибольшее возможное количество очков. Один выбранный день — тоже допустимая выборка.
Пример 1
prices=[3, 9, 5, 6, 10, 8] → 22

Берём дни 0, 2, 3 и 5: цены 3, 5, 6, 8. Между днями 0 и 2 цена выросла на 2 за 2 дня, между 2 и 3 — на 1 за 1 день, между 3 и 5 — на 2 за 2 дня. Сумма 22.

Пример 2
prices=[7, 4, 1] → 7

Цена всё время падает, никакие два дня вместе взять нельзя. Лучше всего взять один день с ценой 7.

Пример 3
prices=[2, 3, 4, 20, 6] → 20
Ограничения
  • 1 ≤ len(prices) ≤ 10⁵
  • 1 ≤ prices[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСудоку без конфликтов СредняяРазложить анаграммы по группам СредняяНулевые кресты СредняяДерево по прямому и симметричному обходам СредняяДерево по симметричному и обратному обходам Средняя
загружаем Python…
Вход
prices=[3, 9, 5, 6, 10, 8]
Ожидается
22

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