Автор задачі: | Мар'ян Шийка Підготував: | Мар'ян Шийка Розбір: | Мар'ян Шийка |
Ідея
Помітимо, що для фіксованого індексу , для якого s_i=0, нам достатньо знати лише один індекс j>i, для якого s_j=1 та значення a_j є максимально можливим.
Справді, якщо ми вже зафіксували , то значення a_i не змінюється, тому для максимізації суми
нам завжди вигідно взяти найбільше можливе a_j серед усіх позицій праворуч, де s_j=1.
Тому пройдемо масив справа наліво та будемо підтримувати значення
серед усіх уже розглянутих позицій , для яких s_j=1.
Якщо на поточній позиції маємо s_i=0, то, якщо mx>a_i, можемо оновити відповідь значенням
Якщо ж s_i=1, оновимо
Таким чином, кожну позицію ми обробляємо рівно один раз.
Загальна асимптотика — .