CCCPaste

fbc24ae62cca8

В этой задаче нужно понять в какой день на текущий момент времени выгоднее всего сдавать волосы. Все просто: сдавать их нужно в тот день, когда цена максимальна среди оставшихся дней. Т.е. пока еще общий срок истечения дней не окончен каждый раз нужно находить максимальный элемент массива C[k] (k=p+1..N-1) и сдавая все волосы получать свои C[k]*(k-p) у.е. , где p - номер последнего дня cдачи волос. За первый день сдачи можно считать p=-1.

Пример кода на python:
n = int(input())
c = list(map(int, input().split()))
m = [0]*n
m[-1] = n-1
for i in range(n-2, -1, -1):
    m[i] = m[i+1]
    if c[i] >= c[m[i]]:
        m[i] = i
ans = 0
d = -1
for i in range(n):
    if m[i] == i:
        ans += c[i]*(i-d)
        d = i
print(ans)